home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 05.zip / BS1 part 5 / IM_1.adf / i_addendum < prev    next >
Text File  |  1992-07-20  |  157KB  |  4,701 lines

  1.                              Table Of Contents                             
  2.                              -----------------                             
  3. Page   2 -- Distance Calculator
  4. Page   2 -- Pad Canvas
  5. Page   3 -- Custom Area Shape Selections
  6. Page   4 -- ANIM OP-5 Generation from Sequencer
  7. Page   5 -- Automatic Custom Display Updating
  8. Page   6 -- Roll Image Geometric Process
  9. Page   7 -- Compose and Process panels reorganized
  10. Page   8 -- Zoom Clip
  11. Page   9 -- Image masks
  12. Page  10 -- Shadows in Compositing
  13. Page  11 -- FilmStrips
  14. Page  12 -- Sequence Processing
  15. Page  17 -- Morphing
  16. Page  22 -- List Requester (ARexx-based capability)
  17. Page  22 -- Load Image as Secondary
  18. Page  22 -- Load Image as Blend
  19. Page  22 -- Load Image as Brush
  20. Page  23 -- Co-ordinates
  21. Page  23 -- Grid
  22. Page  24 -- Adding Noise
  23. Page  24 -- Clip to exact size (F/x)
  24. Page  24 -- X-Specs Over-Under
  25. Page  24 -- X-Specs Interleave
  26. Page  24 -- X-Specs Separate
  27. Page  25 -- F/x User Transforms
  28. Page  25 -- Stretch (Scale, Zoom)
  29. Page  25 -- Map to Range
  30. Page  26 -- Color Balance
  31. Page  27 -- Black Balance
  32. Page  27 -- Force Dynamic
  33. Page  27 -- X-Specs Conversion
  34. Page  28 -- Absolute Resample - no anti-aliasing
  35. Page  28 -- Merge with Render from Range
  36. Page  29 -- Additional Render Controls and Capabilties
  37. Page  29 -- Details
  38. Page  30 -- Compose with Logical OR
  39. Page  30 -- Compose with Logical AND
  40. Page  30 -- Multiple Blend Technique Application
  41. Page  30 -- Smooth Edge Blending as a Percentage
  42. Page  30 -- Masks
  43. Page  31 -- Color Separations
  44. Page  33 -- CMYK and RGB Recombination
  45. Page  34 -- Genlocking
  46. Page  35 -- DCTV
  47. Page  35 -- Brushes
  48. Page  35 -- Color Definition
  49. Page  36 -- Palette Mapping
  50. Page  36 -- Paint Settings To Disk
  51. Page  37 -- New fill modes
  52. Page  38 -- Dual Range Fills
  53. Page  40 -- DPI operations
  54. Page  40 -- Initialize buffer to Color
  55. Page  40 -- Setup Panel
  56. Page  40 -- Information Panel
  57. Page  40 -- Display
  58.  
  59. Page  41 -- ARexx Port Names
  60. Page  41 -- Render command changed
  61. Page  41 -- Filerequest command changed
  62. Page  41 -- Newbuf command (changed)
  63. Page  41 -- Firecracker-specific manipulation (new commands)
  64. Page  42 -- Finding the mouse location from ARexx (new command)
  65. Page  42 -- coords <show> <top> (new command)
  66. Page  42 -- grid <on> <xgrid> <ygrid> <xoff> <yoff> (new command)
  67. Page  42 -- newasprimary (new command)
  68. Page  42 -- newbuf (changed)
  69. Page  42 -- fromdigiview (changed)
  70. Page  43 -- dome (changed)
  71. Page  43 -- caric (changed)
  72. Page  44 -- imagemaspect (new command)
  73. Page  44 -- loadimask (new command)
  74. Page  44 -- saveimask (new command)
  75. Page  44 -- loadmask (new command)
  76. Page  44 -- savemask (new command)
  77. Page  45 -- backuptoundo (new command)
  78. Page  45 -- coords <show> [showattop] (new command)
  79. Page  45 -- grid <on> <xgrid> <ygrid> <xoffs> <yoffs> (new command)
  80. Page  45 -- autoactivate (new command)
  81. Page  46 -- setpalette (new command)
  82. Page  47 -- DISPLAYMODE (new command)
  83. Page  47 -- pal (new command)
  84. Page  48 -- autoprimary <mode> (new command)
  85. Page  48 -- newbrush <bufferNumber> (new command)
  86. Page  48 -- newblend <bufferNumber> (new command)
  87. Page  48 -- loadassecondary <name> (new command)
  88. Page  48 -- loadasblend <name> (new command)
  89. Page  48 -- loadasbrush <name> (new command)
  90. Page  49 -- render (changed)
  91. Page  51 -- Public Interface
  92. Page  51 -- Installing the PI Modules
  93. Page  51 -- Image Locking
  94. Page  52 -- Unlock Buffer (in Buffer Panel)
  95. Page  54 -- PI Module Code Examples
  96. Page  56 -- Changes List (from v7.00 onwards)
  97.  
  98.     
  99.                      Information Updated July 20th, 1992
  100.  
  101.         ==============================================================
  102.                             I M A G E M A S T E R
  103.                                 for the Amiga
  104.                    (Also applies to F/c and HAM-E versions)
  105.         ==============================================================
  106.  
  107.               Information current to version 9.13 of these programs
  108.  
  109.                           Document Author: Ben Williams
  110.               Software: Barry Chalmers, Ben Williams, Pete Patterson
  111.  
  112.                  +-----------------NOTICE------------------+
  113.                  | This information is copyright 1991,1992 |
  114.                  | Black Belt Systems, ALL RIGHTS RESERVED |
  115.                  | under the Pan-American Conventions.     |
  116.                  +-----------------------------------------+
  117.  
  118.     The latest versions of our image processing software have
  119.     additional functions which are not described in the manual. This
  120.     document describes those new capabilities.
  121.  
  122.     For developers, please note that we have included much more
  123.     detailed information on the Public Interface; and that the release
  124.     disk does contain a directory with a complete example of how to
  125.     write a PI Module using SAS C.
  126.  
  127.     Until we formally reprint the manual, additional documentation
  128.     will be provided in on-disk format, ready for printing on your own
  129.     printer. We had originally planned to print continual addendums,
  130.     but there is no way we can keep up with the fast pace of
  131.     development of this program using something as conventional as
  132.     paper.
  133.  
  134.     We will eventually reprint the image processor manual with this
  135.     new information included. Assuming you are a registered user, you
  136.     will be notified at that time what you'll need to do to obtain the
  137.     new paper manual. Make SURE you register!!!
  138.  
  139.     This on-disk documentation has been carefully formatted to be
  140.     printable on virtually any printer providing it has at least 60
  141.     lines per page, is able to print at least 70 columns of text, and
  142.     understands the industry standard "$0C" (decimal 12) character as
  143.     a "form feed".
  144.  
  145.     For a quick update on what changes have been made to the image
  146.     processor, see the changes list at the end of this document.  The
  147.     latest changes are at the end of the list. The features
  148.     described there will be at the beginning of the main
  149.     descriptions, except if there was already a section on that
  150.     subject.
  151.  
  152.     We hope you enjoy these additional capabilities!
  153.     
  154.  
  155.  
  156.  
  157.                                     -1-                                    
  158.     Distance Calculator
  159.     ===================
  160.     This tool is found in the analysis panel. It allows you to
  161.     convert distances between Inches, cm, picas, points,
  162.     Horizontal pixels, and Vertical pixels. This works with the
  163.     distance and area calculation capabilties already available
  164.     in Imagemaster.
  165.     
  166.     Pad Canvas
  167.     ==========
  168.     This tool is found in the resizing and clipping panel, under
  169.     the process main panel. It's function is to pad the selected
  170.     area to a new size, and it allows the user to position the
  171.     clipped and padded area into any one of nine specific
  172.     regions. You could use this to easily center an image in an
  173.     otherwise blank display, for instance. Following is the ARexx
  174.     coding for this operation:
  175.     
  176.     'padcanvas <Xsize> <Ysize> <Position> <NewName>'  ARexx command.
  177.     
  178.     [returns the buffer number]
  179.     
  180.     Xsize and Ysize are the dimensions of the new buffer,
  181.     
  182.     Position is 1 = Top Left
  183.                 2 = Top Center
  184.                 3 = Top Right
  185.                 4 = Middle Left
  186.                 5 = Middle Center
  187.                 6 = Middle Right
  188.                 7 = Bottom Left
  189.                 8 = Bottom Center
  190.                 9 = Bottom Right
  191.     The Following is a working script :
  192.                   
  193.                   /* ARexx example of PADCANVAS operation * /
  194.                   address('IM_Port');
  195.                   'entire';
  196.                   options results;
  197.                   'padcanvas 400 400 5 NewClip';
  198.                   'newcurrent '||result;
  199.                   exit 0;
  200.                   
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.                                     -2-                                    
  217.     Custom Area Shape Selections
  218.     ============================
  219.     The image manipulation software now has the capability to use an
  220.     unlimited number of custom shapes for selecting areas for processing,
  221.     composition, analysis, painting and so on.
  222.     
  223.     In the area selection panel, you will now find "Load New Shape",
  224.     "Shape From Center", and "Shape From Corner". Until you load a custom
  225.     shape, the other two selections will be ghosted.
  226.     
  227.     Shape files have the extension ".ish" attached to them. We have
  228.     provided a number of them with the program, you may place them
  229.     anywhere in your computer's filesystem. Once you have specified a
  230.     directory to load shapes from, saving the preferences of the image
  231.     manipulation program (from the setup panel) will cause this location
  232.     to be remembered permanently.
  233.     
  234.     You can use any one custom shape at a time. Once one is loaded, it
  235.     stays loaded until you load a new shape. Some that we have provided
  236.     with this release are triangles, pentagons, octagons and stars. You
  237.     can create these shapes yourself, too, if you're handy with graph
  238.     paper and comfortable editing ASCII files.
  239.     
  240.     ".ish" files contain only ASCII text. Examining one will show the very
  241.     simple structure of the files. Blank lines "lift the pen" which allows
  242.     you to make shapes that are multiple - that is, disjoint. Lines which
  243.     begin with an asterisk are comments; these are ignored by the image
  244.     manipulation software. Lines with co-ordinates on them are used as
  245.     active point locations for the shape. We suggest you examine the
  246.     "Triangle.ish" file, as it is very easy to understand. There is also
  247.     an "example.ish" file which is designed to be instructive.
  248.     
  249.     When drawing with a custom shape, you can reposition it by pressing
  250.     the right mouse button. Note that shapes from center act differently
  251.     than shapes from corner. Note also that changing the direction you
  252.     move the mouse when you drag out the shape will reverse (or flip, or
  253.     both) the shape you are drawing.
  254.     
  255.     Shapes can be used in the line drawing tools inside the paint portion
  256.     of the program --- you may find this a fine aid to construction of
  257.     certain types of drawings.
  258.     
  259.     If you design your own shape files, please feel free to upload them to
  260.     CompuServe or to our company support BBS, where other users of our
  261.     software will be able to benefit from them.
  262.  
  263.                                  ----------
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.                                     -3-                                    
  276.     ANIM OP-5 Generation from Sequencer
  277.     ===================================
  278.     We have added the capability to generate Amiga animations directly
  279.     from within the image manipulation software. Both the sequencer and
  280.     the morph generator can do this.
  281.     
  282.     You must install the latest PI Modules from the disks (or the telecomm
  283.     distribution archive) for this to work.
  284.     
  285.     Whenever you wish to generate anims, you simply set up three of the
  286.     four script entries in the sequencer or the morph generator with the
  287.     names of three predefined scripts. The script entries and the exact
  288.     contents are as follows:
  289.     
  290.           Name Of Script            Exact Contents
  291.         ------------------          --------------
  292.         Opening Script              rxpi:animwr1.rexx
  293.         Pre-Render Script           
  294.         Post-Render Script          rxpi:animwr3.rexx
  295.         Closing Script              rxpi:animwr4.rexx
  296.     
  297.     Note that there is nothing specified for the "Pre-Render" script. This
  298.     is intentional. For almost all cases of morphing, no Pre-Render script
  299.     is required. For almost all cases of sequencing with the exception of
  300.     batch rendering, you will want to use your own, custom script to
  301.     specify what effects will occur during the sequence.
  302.     
  303.     For instance, the example scripts given later on in this document all
  304.     belong in the Pre-Render script entry. If you use this with this anim
  305.     generation capability, then all four script entries will be used. You
  306.     don't have to worry about the three we provide; they will work very
  307.     well with the others described here.
  308.     
  309.     Once you have placed the scripts named above in the proper three
  310.     entries, rendered output from the sequencer or morph generator will go
  311.     directly to ANIM format. You MUST remember to select a render mode
  312.     appropriate for the animation, as well as a render output size and so
  313.     forth - this will ensure that the animation is the type you want it to
  314.     be. Note that some animation players require the use of a constant
  315.     palette, or will simply look better if you use a constant palette.
  316.     
  317.     For the technically minded:
  318.     ---------------------------
  319.     The four scripts now available in the sequencer allow you to have
  320.     total control over the disposition of the files generated. This ANIM
  321.     generator is a good example of what you can do. All you need to know
  322.     is that the Opening script runs once, before all other activity; the
  323.     pre-render script runs just before each frame is rendered or saved;
  324.     the post-render script runs just after each frame is rendered or
  325.     saved; and the closing script runs once after all frames have been
  326.     generated.
  327.     
  328.     You can use these four "launches" to completely control any external
  329.     disposition of the generated files. Output to film recorders or
  330.     single-frame video recorders are obvious applications. The
  331.     possibilities are endless, and the flexibility is unlimited.
  332.  
  333.                                  ----------
  334.                                     -4-                                    
  335.     Automatic Custom Display Updating
  336.     =================================
  337.     With version 9.09, we have added the capability to automatically lauch
  338.     a script every time the software re-displays the current buffer to the
  339.     monitor.
  340.     
  341.     This capability is meant to be used with pre-prepared scripts and
  342.     commands provided by Black Belt or other developers. What it does for
  343.     you is allows you to view on a different display than the one you
  344.     normally use (for instance, the Amiga graphics output when using
  345.     Imagemaster), the current condition of the primary image,
  346.     automatically.
  347.     
  348.     We have provided the first of these automatic update display modules
  349.     for Impulses FC24 board. If you have an FC24, and are using it on a
  350.     separate monitor, simply place...
  351.     
  352.             rxpi:imfc24.rexx
  353.     
  354.     ...in the entry entitled "redraw script" inside the display panel.
  355.     (You must use the imfc24 script from the latest PI Module
  356.     distribution; earlier versions of the PI Module are not capable of
  357.     this). Once this is set, press the "Call Redraw Script" button and
  358.     you're ready to go. From now on, the image you're working on will be
  359.     maintained on the independant FC24 monitor as well as on the Amiga
  360.     (or HAM-E) display.
  361.     
  362.     In the provided imfc24.rexx script, there are several variables at the
  363.     beginning of the script that may be set by the user to control the
  364.     display resolution used on the FC24 during automatic updates.
  365.     
  366.     For Developers:
  367.     ---------------
  368.     Using this new capability is simple. The scripts which are called from
  369.     the "redraw script" entry are called with the following 5 parameters:
  370.     
  371.         "JACKIN" - structure pointer (in ASCII Hexadecimal)
  372.             "X1" - leftmost point of the area which needs redrawing
  373.             "Y1" - topmost point of the area which needs redrawing
  374.             "X2" - rightmost point of the area which needs redrawing
  375.             "Y2" - bottommost point of the area which needs redrawing
  376.     
  377.     An ARexx script that uses these might look like...
  378.     
  379.         /*      Sample Automatic Display Script For Developers       */
  380.         parse arg jacker x1 y1 x2 y2;              /* get parameters */
  381.         address command cmpi:mydupdate jacker x1 y1 x2 y2; /* do it! */
  382.         'finish';       /* Very Important - tells us we can continue */
  383.     
  384.     ...here, the ARexx variables "jacker", "x1", "y1", "x2" and "y2" are
  385.     automatically set by our software when we call your script. You can
  386.     then use the data in these variables to instruct your display control
  387.     program what it is it needs to do. Here, we're calling a hypothetical
  388.     program called "mydupdate" which would take these variables and then
  389.     deal with the display it is written to handle. Finally, we use
  390.     'finish'; to tell our software it may continue processing.
  391.     
  392.                                  ----------
  393.                                     -5-                                    
  394.     Roll Image Geometric Process
  395.     ============================
  396.     This operation allows you to roll an image in the horizontal, vertical
  397.     or both directions. Normal rolling goes down and right; negative roll
  398.     amounts cause rolling to go left or up.
  399.  
  400.     There are three roll modes. The first is "wrap", where the portion of
  401.     the image that has rolled off of the edge re-appears on the opposite
  402.     edgein the newly opened area. The second is "fill with edge pixels",
  403.     where the pixels rolled off the edge are lost and the incoming edge is
  404.     filled with a duplicate of the receeding edge of the image. The third
  405.     is "pad with color", where the pixels rolled off the edge are lost and
  406.     the incoming edge is filled with a solid color you select using "set
  407.     foreground color" in the process panel.
  408.  
  409.     This function is located in the Geometric Operations panel, which
  410.     itself is located under the main Process panel.
  411.     
  412.     ARexx Operation
  413.     ---------------
  414.     rollimage <xamount> <yamount> <mode>
  415.  
  416.     parameters <required> [optional] :
  417.     
  418.         <xamount> - a positive or negative value for horizontal roll
  419.         <yamount> - a positive or negative value for vertical roll
  420.            <mode> - 0=wrap, 1=edge fill, 2=color fill.
  421.  
  422.     effects:
  423.     
  424.         ARexx variable RC is set to zero if no problems, nonzero if the
  425.         user presses "CANCEL" while the effect is being generated
  426.  
  427.     example of use:
  428.     
  429.         /* simple test script for 'rollimage' */
  430.  
  431.         address 'IM_Port';        /* allows us to talk to our software */
  432.         'rollimage' 10 10 0;         /* do the roll in edge wrap mode. */
  433.         if rc ~= 0 then say "User Pressed Cancel!";        /* informer */
  434.         exit 0;                                           /* all done! */
  435.  
  436.                                  ----------
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.                                     -6-                                    
  453.     Compose and Process panels reorganized
  454.     ======================================
  455.     With version 9.00, a major reorganization of the image processing and
  456.     composition control panels was put into effect.  This was done for two
  457.     main reasons. First, the process panel and the F/x panel, a panel of
  458.     other process operations, had both become so loaded with functions
  459.     that it was quickly becoming a significant effort to locate a
  460.     particular tool - especially if that tool wasn't one you used often
  461.     (and so were not quite familiar with where it was placed).  The
  462.     compose panel, though not nearly as heavily loaded, suffered from a
  463.     similar problem. The new organization, while quite different from the
  464.     organization present in versions 1.00 through 8.02, is easier to learn
  465.     and easier to use because it is more highly structured.
  466.  
  467.     The second reason comes about because the image manipulation software
  468.     does not contain pre-drawn buttons (gadgets). Instead, it generates
  469.     the buttons and other controls needed for a particular panel only when
  470.     it is time to open that panel, and then discards them after that panel
  471.     has been closed. We designed it this way because it saves many
  472.     hundreds of thousands of bytes of ram during operation, and also
  473.     reduces the main program size on disk by the same amount. These are
  474.     both significant benefits; however, when a large panel needs to be
  475.     generated, the time involved to create the control images and other
  476.     items for display becomes significant. The new organization of the
  477.     panels results in more control panels, all of which contain fewer
  478.     controls... so the panels are generated faster.
  479.     
  480.     In addition to the major panel rework, other user interface changes
  481.     were also made to help ease the program's operation. The "info" panel
  482.     is now accessable directly from the main panel; the render controls in
  483.     the File I/o panel have been subtly re-arranged to be easier to use;
  484.     the program's autoactivation capabilities have been steamlined for
  485.     more efficient operation; the font list requester was widened for
  486.     easier use with longer font names; you can now use the 2.0 (ASL) file
  487.     requester if you prefer, and the sequence processor can now sort the
  488.     file list for you.
  489.  
  490.     The following lists show the general organization of the new panels;
  491.     the number following each new panel represents the number of basic
  492.     tools in each. In many cases, these tools lead to still other tools
  493.     and effects, totalling many hundreds of different operations.
  494.  
  495.     Process --------- Standard Adjustments          ( 22 )
  496.                       R,G,B Corrections             (  9 )
  497.                       Filters                       ( 21 )
  498.                       Geometric Transformations     ( 19 )
  499.                       Special Effects               ( 33 )
  500.                       Analysis                      (  8 )
  501.                       Resizing and Clipping         (  9 )
  502.                       Set Blend                     ( 10 )
  503.  
  504.     Compose --------- Linear Compositions           (  8 )
  505.                       Color Keyed Compositions      (  8 )
  506.                       Color Recombinations          (  7 )
  507.                       Algebraic Compositions        (  4 )
  508.                       Logical Compositions          (  3 )
  509.                       Special Compositions          (  7 )
  510.                       Composition Controls          (  5 )
  511.                                     -7-                                    
  512.     Zoom Clip
  513.     =========
  514.  
  515.     This operation allows you to zoom in a specific amount "into" the
  516.     image in the primary buffer. It is located in the Process, Resizing
  517.     and Clipping panel.
  518.  
  519.     The intention is to allow zooms within animation sequences to be
  520.     generated in a natural manner. You can specify the percentage to zoom
  521.     in, and also the output resolution for the resulting clip. Note that
  522.     the output resolution will always default to the same resolution as
  523.     the current primary image.
  524.  
  525.     Remember that the higher the resolution of the source image, the more
  526.     detail will result in the zoom. Extreme magnifications, while smooth,
  527.     will very likely not appear realistic. We suggest that for extreme
  528.     zoom effects, you may wish to generate several sequences using
  529.     different resolution sources.
  530.  
  531.     ARexx Operation
  532.     ---------------
  533.     zoomclip <xzoom> <yzoom> <xc> <yc> <name> [xs] [ys]
  534.  
  535.     parameters:
  536.         <xzoom> - required Percentage from 101% to 2000%
  537.         <yzoom> - required Percentage from 101% to 2000%
  538.         <xc> ---- required Horizonal (X) Center, in pixels
  539.         <yc> ---- required Vertical (Y) Center, in pixels
  540.         <name> -- required Name for the newly created clip
  541.         [xs] ---- optional (X) Size for newly created clip
  542.         [ys] ---- optional (Y) Size for newly created clip
  543.  
  544.     effects:
  545.         ARexx variable RC is set to zero if no problems, nonzero for error
  546.  
  547.         if OPTIONS RESULTS is in effect, returns ARexx variable
  548.         "RESULT" as the number of the newly created clip.
  549.  
  550.     example of use:
  551.         /* test script for 'zoomclip' in sequence processor */
  552.  
  553.         options results         /* let image processor return results */
  554.         'tween 101 200';    /* get value for this frame, 101% to 200% */
  555.         Z = result;                     /* copy to variable named "Z" */
  556.         'zoomclip' Z Z 100 100 "zoomed image" 320 200; /* do the zoom */
  557.         'finish';              /* tell image processor script is done */
  558.  
  559.                                  ----------
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.                                     -8-                                    
  571.     Image masks
  572.     ===========
  573.     
  574.     General
  575.     -------
  576.     In the image processor, images may have a local mask. This mask is
  577.     permanently associated with the image, and its purpose is to define
  578.     the usable (valid) region of the image. For instance, if you create a
  579.     text object image, there is a mask that is the shape of the text which
  580.     "masks off" the rest of the image area, which is actually rectangular.
  581.     
  582.     In addition, when you specify a region of an image you want to do
  583.     something to with any of the region selection tools, you are creating
  584.     a temporary mask within which the effect is to occur. In normal
  585.     operation, if the image has a local mask, both the local mask and the
  586.     temporary main (area selection) mask are used to specify the region to
  587.     be affected.
  588.     
  589.     Loading and Saving Masks
  590.     ------------------------
  591.     You may load, and save masks from and to both the main (area
  592.     selection) and local (validation) masks. In addition, you can specify
  593.     logical operations to occur when you load a mask; you can 'or' it with
  594.     the currently existing mask, replace the current mask with it, and so
  595.     on.
  596.     
  597.     Note that there are corresponding ARexx commands for loading and
  598.     saving both masks.
  599.     
  600.     Virtual Resolution
  601.     ------------------
  602.     Masks are saved in the resolution of the image they are associated
  603.     with, so this is the limit of detail you can save. When masks are
  604.     loaded, however, they are scaled to the same size as the current
  605.     image. This "virtual" resizing allows you to use a mask as a cookie-
  606.     cutter on any size image simply given that you've defined it the way
  607.     you want to.
  608.     
  609.     One example of this might be to create a text object, and then save
  610.     the mask. Now, reload that mask as the image mask using replace, and
  611.     the only parts of the image that are valid are those regions within
  612.     the shapes of the letters. This is a very powerful capability.
  613.     
  614.     Masks from ARexx
  615.     ----------------
  616.     From ARexx, you can use masks with the sequence processor very
  617.     handily. Say you have a series of images within which you wish to
  618.     affect the same relative region. Load one of the images, and carefully
  619.     define the area to be affected. Save the main mask. Now, in the
  620.     sequence processing script, you can reload that mask using REPLACE
  621.     mode and each image processed in the sequence will be affected in the
  622.     same region.
  623.     
  624.     The ARexx commands are 'loadmask', 'savemask', 'loadimask' and
  625.     'saveimask'. All are explained later in this document. The load
  626.     commands have logical variations; and, or, xor, subtract, replace.
  627.     
  628.                                  ----------
  629.                                     -9-                                    
  630.     Shadows in Compositing
  631.     ======================
  632.  
  633.     General
  634.     -------
  635.     Shadows can be generated as an additional effect during
  636.     compositing operations. There are two controls in the Compose
  637.     panel that facilitate this.
  638.  
  639.     The "switch" that controls whether a shadow is generated is called
  640.     "Shadow Enable". When this is selected, a shadow is generated.
  641.  
  642.     How the shadow appears is controlled by the panel that appears
  643.     when you select "Shadow Control" from the compose panel. In this
  644.     panel you will find the means to set the direction of the shadow
  645.     to any angle, it's intensity (how dark the shadow appears) and the
  646.     length of the shadow.
  647.  
  648.     The angle should be set to the opposite direction that you want
  649.     the illumination to appear to be coming from. '0' degrees is
  650.     straight up, and as the angle increases, the shadow proceeds
  651.     clockwise from that position. 1/4 of a turn is 90 degrees.
  652.  
  653.     Shadow intensity is least (lightest) when it is set to zero, and
  654.     most intense (darkest) when it is set to 255. Note that if you
  655.     are using any blending techniques, the shadow will also obey the
  656.     blend parameters; a partially transparent object will produce a
  657.     lighter shadow than a non-transparent object. The shadow will
  658.     follow the transparency curve of the object exactly unless you
  659.     specifically tell it not to.
  660.  
  661.     The length of the shadow is specified in pixels, and it
  662.     essentially defines the distance that the shadow position is
  663.     offset from the position you placed the original item being
  664.     composited.
  665.  
  666.     This capability allows you to create shadows with realistic soft
  667.     edges easily. One technique you might like to try is setting a
  668.     blend with very soft edges, and with shadow on, compositing the
  669.     images together. Next, turn the shadow off, and the blending off;
  670.     now re-composite the images using "Previous Region". This will
  671.     generate a perfect shadow with soft edges, yet the composed image
  672.     will be sharp. This effect duplicates what happens when an object
  673.     is removed a significant distance from the surface where the
  674.     shadow is cast.
  675.  
  676.                                  ----------
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.                                    -10-                                    
  689.     FilmStrips
  690.     ==========
  691.  
  692.     General
  693.     -------
  694.     The image processor's film strip capability provides you with
  695.     two distinct capabilities;
  696.  
  697.         - you can have a visual record of what you've been doing
  698.         - you can animate the contents of a filmstrip as a test
  699.  
  700.     The filmstrip contents may be saved and reloaded; you can
  701.     view the filmstrip in interlace or non-interlace; you can
  702.     manually insert frames or let the image processor do it for
  703.     you, automatically; you can use a VCR-style control panel to
  704.     go anywhere in the filmstrip; and you can set the filmstrip
  705.     to any length you like (based upon how much memory you have,
  706.     of course).
  707.     
  708.     You can choose between either a B&W filmstrip, or a color
  709.     filmstrip. There is a tradeoff here; B&W filmstrips are very
  710.     good for detail, but you can't see any color effects that may
  711.     be important to you. Color filmstrips, while very good at
  712.     generally representing color, are very rough by comparison
  713.     due to the dithering techniques that must be used to make
  714.     full color images from a 16-color preset Amiga palette. Color
  715.     filmstrips work much better in an interlace filmstrip as
  716.     there are twice as many pixels available for the dither to
  717.     use. If you use a color filmstrip and want it to be viewed
  718.     with the supplied viewer (FilmView), then you'll need to
  719.     ensure that version 1.01 of the viewer is being used (this is
  720.     supplied on the release disks).
  721.     
  722.     When you change the length of the filmstrip, if the new
  723.     length is longer than the previous length, the filmstrip
  724.     contents are retained.  If the new length is shorter, then
  725.     any frames which were "deeper" into the filmstrip than it's
  726.     new length will be lost.
  727.  
  728.     You can change the animation playback from "pong" to "loop";
  729.     this will come in handy often. Reverse animation is also
  730.     available.
  731.     
  732.     Other controls available include insertion, deletion and
  733.     swapping of frames. Frames are numbered to facilitate these
  734.     operations.
  735.  
  736.     You'll find the filmstrip controls in the DISPLAY, Morph and
  737.     Sequence panels. Filmstrip allocation is performed only in
  738.     the display panel.
  739.  
  740.                                  ----------
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.                                    -11-                                    
  748.     Sequence Processing
  749.     ===================
  750.  
  751.     General
  752.     -------
  753.     In the File I/o panel, the control "Set Up Multi-frame Sequence"
  754.     provides access to the sequence processor. This is a capability
  755.     that allows you to select a group of images to be loaded (or you
  756.     can select a single image to come from the secondary buffer),
  757.     processed, and optionally resaved in either 24-bit IFF format or
  758.     rendered to another display mode - or both.
  759.  
  760.     We strongly suggest you have the FilmStrip operating when you do
  761.     sequence processing. This will allow you to see each frame as it
  762.     is processed as a history, which is very enlightening. Also, if
  763.     you elect to run the sequence without generating any output, you
  764.     can use the filmstrip to examine the general effect to see if it
  765.     was what you wanted.
  766.     
  767.     Processing is done using a very simplified form of an ARexx
  768.     script, which can be as simple as three lines of text, or as
  769.     complex as you like. The script you choose is executed once for
  770.     each frame in the sequence - we'll show you how to do it here.
  771.  
  772.     It is very important that you take the time to look at the example
  773.     scripts presented here, even if you are NOT an ARexx user; we have
  774.     designed this capability so that you can use it VERY easily and if
  775.     you elect to ignore it you're going to be shooting yourself in the
  776.     foot - no kidding.
  777.  
  778.     Brief Description
  779.     -----------------
  780.     Essentially, multi frame sequence processing is broken up into two
  781.     stages. First, you need to prepare a simple ARexx script that will
  782.     process your images in the fashion you desire. Second, you use the
  783.     sequence processing control panel to select a set of images to
  784.     apply these effects to; you also select what you want done with
  785.     the results - save them as IFF, render them to a particular output
  786.     mode, or discard them (this last is useful to test scripts to see
  787.     if they have the desired effect).
  788.  
  789.     As we mentioned previously, we strongly suggest you have the
  790.     filmstrip turned on. One of the most revealing things you can do
  791.     to a sequence to see if it's what you wanted is to animate it
  792.     using the filmstrip. You can see if the results are smooth enough;
  793.     if not, you should use more frames. Perhaps you'll determine that
  794.     you can get away with fewer frames. Even if you got everything
  795.     perfect on the first try, it's nice to have that confirmed by the
  796.     filmstrip animation.
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.                                    -12-                                    
  807.     We describe two example ARexx scripts in painstaking detail
  808.     further on in this document; we'll begin with a description of the
  809.     options available to you in the sequence control panel.
  810.  
  811.     Sequence Control Panel
  812.     ----------------------
  813.     This control panel presents you with two lists, one on each side
  814.     of the display. The list on the left acts like a file requester;
  815.     you use it to navigate through the Amiga's filesystem and choose
  816.     files. Each file you choose from the left hand list is placed into
  817.     the right hand list, which is the list of files that will be
  818.     processed for this sequence. Below the lists are the name of the ARexx
  819.     script that will be used to process each of the selected images, and
  820.     the number of image files that have been selected for processing.
  821.  
  822.     Finally, at the bottom of the display are a set of controls which
  823.     allow you to set up various items used in the sequence processing.
  824.     Here is a description of each control:
  825.  
  826.     "Set Path" allows you to set the path where the list requester
  827.     will begin looking for image files.
  828.  
  829.     "Parent" causes the left list requester to change directories to
  830.     the parent directory of where it is currently located.
  831.  
  832.     "Set Script" allows you to specify up to four ARexx scripts to be used
  833.     to process the sequence of images.
  834.  
  835.     "Save List" and "Load List" allow you to save and reload the
  836.     right-hand list of images for later use.
  837.     
  838.     "Delete Entry" allows you to remove a particular image file from
  839.     the right hand list after clicking on that entry.
  840.  
  841.     "Film" provides access to the filmstrip controls.
  842.  
  843.     "Run List" opens a new control panel where you specify the output
  844.     filenames for the results of the sequence process operation; you
  845.     can cancel out of this panel if needed, or you can execute the
  846.     operation there. You can also use the secondary or primary buffer
  847.     as the source for the operation, repeatedly.
  848.  
  849.     "Done" exits the sequence processing panel without actually doing
  850.     a sequence.
  851.  
  852.     ARexx Script Particulars
  853.     ------------------------
  854.     There is one new command which must be used at the end of any
  855.     script that is built for multi-frame processing. This command is
  856.     'finish'; It tells the image processor that all operations in the
  857.     script have completed, so another image may be loaded (or the
  858.     operation can terminate, if the last frame has been processed. If
  859.     you neglect to include the 'finish' command, only the first frame
  860.     of the sequence will be processed.
  861.  
  862.  
  863.  
  864.  
  865.                                    -13-                                    
  866.     In addition to the 'finish'; command, we have provided the
  867.     'tween'; command. You'll use it in scripts where you want various
  868.     parameters to change from frame to frame. We'll show you how to
  869.     use this command a little further on.
  870.  
  871.     For the user who really wants to get into the "nitty gritty" of
  872.     working with these scripts, two arguments are always passed to the
  873.     ARexx script which you may use if you like. The first argument is
  874.     the current image number. In other words, if you have selected 20
  875.     images to be processed, and this is the third image, then this
  876.     argument will be "3". For a sequence of 20 images, the argument
  877.     will go from 1 to 20; it will never be zero. The second argument
  878.     passed is the total number of frames. In the example we explained
  879.     just previously, the second argument would be 20. These two
  880.     arguments can be used to control anything you can imagine, but
  881.     require you to be fairly sophisticated in your script-writing. For
  882.     the vast majority of users, the 'tween'; command will handle
  883.     everything you need to do.
  884.  
  885.     Constant Effects Across Multiple Frames
  886.     ---------------------------------------
  887.     Here is a very simple example of how to apply a particular set
  888.     (constant) effect across a sequence of images.
  889.  
  890.         /* SimpleSeq.rexx - minimal demonstration script */
  891.         'entire';             /* specify do entire image */
  892.         'contrast 50';        /* 50% contrast increase   */
  893.         'finish';             /* mandatory final command */
  894.  
  895.     SimpleSeq.rexx is a good example showing just how really simple a
  896.     script can be. It selects the region to be affected (the entire
  897.     image), applies a 50% contrast to that region, then informs the
  898.     image processor that it may proceed to the next image in the
  899.     sequence. If you select 60 images, all of them will have this
  900.     exact amount of increased contrast.
  901.  
  902.     Variable Effects Across Multiple Frames
  903.     ---------------------------------------
  904.     We'll look at how you might gradually apply the contrast effect
  905.     over time now, using the 'tween'; command. The example script here
  906.     has only three more lines than the example that showed you how to
  907.     apply a constant level of contrast; this clearly shows how easy it
  908.     is to create extremely powerful, perfectly sequenced effects
  909.     automatically. If you've been avoiding ARexx, it's time to have
  910.     some real fun!
  911.  
  912.     Here is the actual script, ready to use:
  913.  
  914.       /* Contrast.rexx - shows how to get varying effects across frames    */
  915.       options results;     /* this tells IM, IMFC or IP to return "result" */
  916.       'entire';            /* select entire image as operation target      */
  917.       'tween 0 100';       /* get "tween" value into autovariable "result" */
  918.       'contrast '||result; /* apply the tweened amount, changing smoothly  */
  919.       'finish';            /* mandatory final command - end of script      */
  920.  
  921.                  <detailed explanation provided on next page>
  922.  
  923.  
  924.                                    -14-                                    
  925.     Here is a line by line explanation of the script.
  926.  
  927.     /* Contrast.rexx - shows how to get varying effects across frames */
  928.     --------------------------------------------------------------------
  929.     This line is an ARexx "comment". It serves two purposes here.
  930.     First, the ARexx language says that the first line of an ARexx
  931.     script MUST be a comment - so you have to at least put the comment
  932.     delimiters in the first line, shown here...
  933.                        /*    */
  934.     ...or ARexx won't even attempt to execute the script. The other
  935.     purpose is to inform you what the script is about. After all,
  936.     since you are required to put the comment there, it might as well
  937.     be useful, eh? Comment lines may appear anywhere and have no
  938.     effect upon the actual operation of the script.
  939.  
  940.     options results;
  941.     ----------------
  942.     This is a command to the ARexx language itself which informs any
  943.     program receiving a command (the image processor, in this case)
  944.     that it is ok to return a value if a macro command is executed
  945.     that should return one. If this line is not present, then you
  946.     won't get a value back from the image processor. We need it here
  947.     because the 'tween' command does need to return a result to the
  948.     script (see the next explanatory paragraph for details on this).
  949.  
  950.     'entire';
  951.     ---------
  952.     This is a command to the image processor which tells it that the
  953.     region we want to affect by the next process we execute is the
  954.     entire image. You might have used 'oval' or 'rect' here instead,
  955.     if you just wanted to contrast a portion of the image.
  956.  
  957.     'tween 0 100';
  958.     --------------
  959.     This command to the image processor is the key to easy variable
  960.     processes over multiple frames. What it is saying is that over the
  961.     course of this sequence, the starting value (for the first frame
  962.     processed) is to be "0"; and the ending value (for the last frame
  963.     processed) is to be "100". The tween command uses this information
  964.     with internal information the image processor maintains about how
  965.     many frames there are and which one is being processed now, to
  966.     determine the appropriate value to return for this particular
  967.     frame in the sequence - no matter what frame it is. The 'tween'
  968.     command can start with a low value and go to a high one, or vice-
  969.     versa. It can also handle negative numbers. For operations where
  970.     there are multiple parameters, just use multiple 'tween' commands
  971.     and put the "result" from each into it's own variable. The 'tween'
  972.     command is simple, and very powerful.  Here are some examples...
  973.     
  974.         'tween -100 100'; var1 = result;
  975.         'tween 100 0'; var2 = result;
  976.         'tween -75 50'; var3 = result;
  977.     
  978.     ...now var1, var2 and var3 could be used later as different
  979.     parameters for a script that needed several different values.
  980.         
  981.                      <explanation continued on next page>
  982.  
  983.                                    -15-                                    
  984.     'contrast '||result;
  985.     --------------------
  986.     This is the actual command to the image processor which instructs
  987.     it to apply a certain amount of contrast to the image of the
  988.     sequence that is currently being processed. The image processor's
  989.     contrast command can take values from -100 to 100, and the
  990.     variable "result" contains a value within these limits, which we
  991.     got from the 'tween' command.
  992.     
  993.     Note that the variable "result" is set whenever you call ANY
  994.     command to the image processor after executing "options results",
  995.     so it is constantly being reset to a new value. Often, the best
  996.     course is to copy the value in "result" to a new variable, like
  997.     we showed you in the explanation for the 'tween' command. Here's
  998.     another example...
  999.     
  1000.         'tween -25 25'; tweenvalue = result;
  1001.     
  1002.     ...where the semicolons serve to separate ARexx commands. The next
  1003.     command changing the contents of "result" won't unintentionally
  1004.     lose you your returned value here. In the script example, because
  1005.     we use "result" immediately after we get it from the 'tween'
  1006.     command, we don't need to copy it, it's still got the value we
  1007.     wanted in it. The dual vertical bars are a concatination operator;
  1008.     they "glue" text together. Let's say that the variable "result"
  1009.     contains the number "25". The result of this line will be sent to
  1010.     the image processor and it will look like this...
  1011.  
  1012.             contrast 25
  1013.  
  1014.     ...which is exactly what you want.
  1015.  
  1016.     'finish';
  1017.     ---------
  1018.     This line tells the image processor that the script is complete.
  1019.     The sequence processing then knows to go on and load the next
  1020.     frame to be worked upon, or to terminate if the last frame has
  1021.     been completed.
  1022.     
  1023.     Note that the scripts described here belong in the "Pre-Render" script
  1024.     entry. The other three script entries are used to control more complex
  1025.     batch operations.
  1026.  
  1027.                                  ----------
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.                                    -16-                                    
  1043.     Morphing
  1044.     ========
  1045.  
  1046.     General
  1047.     -------
  1048.     This is a compose operation. Morphing is the process of combining two
  1049.     images to form a third image, using geometric (positional) and color
  1050.     information from both source images. Usually, it is also taken to mean
  1051.     the generation of a sequence of images which provide a continuous (or
  1052.     as nearly so as possible) change from one image to the other. This
  1053.     effect is the basis for many current video and cinematic scenes of
  1054.     startling content. You'll find it under "Special Combinations" in
  1055.     the Compose Panel. You can only use it if you have both a primary and
  1056.     a secondary image loaded.
  1057.  
  1058.     The Morph capability implemented in our image processor provides the
  1059.     abilities to generate individual frames as needed, or a sequence of
  1060.     frames to your specifications. You have excellent control over the two
  1061.     most important factors in the process:
  1062.  
  1063.         1 - The geometry transform information (positional changes)
  1064.         2 - The colorimetry transform information (transparency changes)
  1065.  
  1066.     The first, geometric control is provided by the user specifying
  1067.     "control points" on both of the source images. To understand what this
  1068.     means, let's consider a simple example.
  1069.  
  1070.     Say you wish to apply the morph process (we'll simply call this
  1071.     "morph" from now on) to a man's face and a woman's face. The images
  1072.     are quite different; the man is swarthy and has a wide, solid face,
  1073.     while the woman is elegantly slim, with high cheekbones and has an
  1074.     oriental cast to her eyes. A good beginning for working on these two
  1075.     images is to start with what the images have in common; what the
  1076.     viewer will "naturally" assume are features that are "the same".
  1077.     Examples of this are eyes, eyebrows, nose, mouth, and ears. For the
  1078.     eyes, you might place control points on the start image at the corners
  1079.     of the eyes. Note that points automatically appear in the same
  1080.     location on the other image. Now, you move the points on the other
  1081.     image so that these points are also in the corners of it's eyes.
  1082.  
  1083.     What you have done is told the image processor that you expect these
  1084.     two locations - the eye corners - to remain "attached" to each other
  1085.     throughout the morph process. You'll continue to apply control points
  1086.     to the pupils of the eyes, across the eyebrows, the lips, the ears,
  1087.     the edges of the face and so on. You may use as few as ten or so
  1088.     points, or you may use several hundred. The more you use, the more
  1089.     precisely controlled the morph effect will be.
  1090.  
  1091.     Note that you can save your control point sets; you should do this
  1092.     often, so as to prevent the loss of your work in case of a system
  1093.     failure of any kind.
  1094.  
  1095.     The best way to learn how to morph is to try a few. We strongly
  1096.     suggest that you start with two faces; and that you keep the initial
  1097.     morphs very small, about 96x60 or 48x30. Morphing is a computationally
  1098.     intensive process, and generating each frame takes considerable time.
  1099.  
  1100.  
  1101.                                    -17-                                    
  1102.     Here's a useful hint. When you're experimenting, set the number of
  1103.     frames to 20, and then generate only frame 10. Use a linear
  1104.     transparency curve.  This will show you what will occur for a morph
  1105.     that is 50% complete; that is when both images are maximally merged
  1106.     with each other. If you have missed something important, it will
  1107.     likely show more at this time than any other.
  1108.  
  1109.     The morph capability is extremely open-ended; experimentation will
  1110.     produce outstanding results.
  1111.  
  1112.     We have found that you typically need between 50 and 150 control
  1113.     points to create the most effective morph results. Fewer points tend
  1114.     to leave areas "uncontrolled", more result in longer computation times
  1115.     and not much difference in output quality. By all means experiment,
  1116.     though - you may achieve effects we did not expect which please you.
  1117.  
  1118.     Following are specific descriptions of the items available to you as
  1119.     part of the image processor's current morphing capabilities.
  1120.  
  1121.     Elements of the Morph Display
  1122.     -----------------------------
  1123.     At the top left, the source image is presented. This is the image that
  1124.     has the most impact upon the morph at the beginning of the sequence
  1125.     (using the default transparency curve). At the top right, the
  1126.     destination image is presented. This is the image that has the most
  1127.     impact upon the morph at the end of the sequence.
  1128.  
  1129.     In the center bottom portion of the display is the point vector
  1130.     window. This window presents you with the paths over time that the
  1131.     points you have defined will travel; and where they will be for the
  1132.     particular frame being generated (during the actual morph process).
  1133.  
  1134.     At the right center is a small frame where postage-stamp sized images
  1135.     are presented during sequence generations. This lets you know where
  1136.     you are, so to speak, when the morph is operating.
  1137.  
  1138.     At the left center, some text is presented which tells you how many
  1139.     control points are currently defined.
  1140.  
  1141.     Finally, at the bottom is a control panel used to control major
  1142.     operations and modes within the morph generation.
  1143.  
  1144.     Add Points
  1145.     ----------
  1146.     When this button is depressed, you can add points to the source (left)
  1147.     image. When you add a point, it will also appear (in the same relative
  1148.     location) on the right image. You can immediately move the points on
  1149.     the right image, even though you are still in Add Points mode. You
  1150.     cannot add points to the destination image, only the source image.
  1151.  
  1152.     Move Points
  1153.     -----------
  1154.     When this button is depressed, you can move any point on either image.
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.                                    -18-                                    
  1161.     Delete Points
  1162.     -------------
  1163.     When this button is depressed, you may delete any point on either
  1164.     image. When a point is removed from an image, the corresponding point
  1165.     on the other image is also removed.
  1166.  
  1167.     Delete All Points
  1168.     -----------------
  1169.     This button removes all of the points that are currently defined.
  1170.  
  1171.     Swap All
  1172.     --------
  1173.     This button allows you to swap the source and destination images, and
  1174.     all the points that were defined for them. This causes the morph to be
  1175.     generated in the opposite order, and may help you if you are having
  1176.     trouble building a mental image of what you want to happen during the
  1177.     morph.
  1178.  
  1179.     Swap Points
  1180.     -----------
  1181.     This swaps only the point definitions. This is useful when you enter
  1182.     the morph tools with the primary and secondary images loaded
  1183.     backwards; instead of having to exit the morph panel and start over,
  1184.     you can just swap the points. This makes it so that the proper set of
  1185.     points is associated with the correct image. If the morph is now
  1186.     backwards, that is, the generation will be in the opposite order than
  1187.     that which you intended, then use Swap All to reverse the sequence and
  1188.     you'll be ready to go.
  1189.  
  1190.     Load Points
  1191.     -----------
  1192.     This allows you to load a set of points which were previously saved.
  1193.     Note that all point position information is in a virtual space. This
  1194.     allows you to perform experimental morphs using very low resolution
  1195.     copies of images (we suggest 160x100 for most attempts) until you get
  1196.     the morph behaivior the way you want it; then, you can use higher
  1197.     resolution images and the morph point set will still be located in the
  1198.     same places on the image - the virtual space causes the translation to
  1199.     be completely transparent to you.
  1200.  
  1201.     Save Points
  1202.     -----------
  1203.     This allows you to save the currently defined set of points in a named
  1204.     file for later reuse.
  1205.     
  1206.     Interlace Work Area
  1207.     -------------------
  1208.     This control allows you to use an interlaced screen display to work
  1209.     with the morph tools. If you have a deinterlacing device attached to
  1210.     your computer, or flicker doesn't bother you, you should use this
  1211.     setting. The additional vertical resolution allows more precision when
  1212.     placing points, and also provides better grey scale accuracy (due to
  1213.     more, and smaller, points available for dithering).
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.                                    -19-                                    
  1220.     Set Controls
  1221.     ------------
  1222.     This button opens a new control panel. Here, you load or create a
  1223.     transparency curve; once created, you can save the curve for later
  1224.     use. You may draw the curve using your mouse. Note that when curves
  1225.     are saved as files, they are saved in ASCII format so you can, if you
  1226.     are so inclined, edit the files yourself. The file format includes a
  1227.     virtual resolution for the morph, comments, and specific point-pair
  1228.     information.
  1229.  
  1230.     You also set the total number of frames you wish to be considered
  1231.     when morphing from the source image (the one on the left) to the
  1232.     destination image (the one on the right). Finally, you also set the
  1233.     output resolution here. The output resolution is the resolution that
  1234.     the morph frames will be generated in.
  1235.  
  1236.     Morph 1 Frame
  1237.     -------------
  1238.     This control will prompt you for the single frame you wish to generate
  1239.     out of the sequence you have defined (using Set Controls). Once you
  1240.     tell it what frame you want to do, it will immediately proceed to that
  1241.     frame, bypassing any others which would normally preceed it, and build
  1242.     that morph state. If you abort the generation, it will return to the
  1243.     morph control panel. If the morph process is allowed to proceed to
  1244.     completion, you are presented with the buffer selection panel. Once
  1245.     you choose a destination buffer, the main control panel returns.
  1246.  
  1247.     Sequence Generate
  1248.     -----------------
  1249.     In this panel, you set up the path, name and extension you wish to be
  1250.     used for the generation of multiple output frames. You have the
  1251.     opportunity to select a subset of the complete morph; in other words,
  1252.     if this is a 20 frame morph, you can specify that you only want to
  1253.     generate frames 14-17 or any other contiguous sequence. You can
  1254.     specify that the current render settings be used, in which case each
  1255.     frame of the morph will be rendered instead of saved as 24-bit images.
  1256.  
  1257.     Note that for most renders which are going to become animations, you
  1258.     will have to carefully provide a good set of colors to use or the
  1259.     animation will be poorer quality. An effective way to pick the "right"
  1260.     colors is to render a small set of morph frames (80x50 is good) and
  1261.     then composite those into one frame. Let the render tools pick colors
  1262.     from that single frame, then save the resulting palette. This will be
  1263.     an excellent palette to use across the total morph in the larger size.
  1264.  
  1265.     You may cancel out of this panel, in which case no frames will be
  1266.     generated, or you may select Done to initiate the proceedure. The
  1267.     generation of the morph sequence may be interupted at any time by
  1268.     pressing the close gadget on the progress bar indicator.
  1269.  
  1270.     Drop Grid
  1271.     ---------
  1272.     This button allows you to "drop" a regular, rectangular grid
  1273.     of control points upon the images you're working with. Often,
  1274.     this may provide the "nailed-to-the-wall" effect for the
  1275.     majority of the image you need when doing distortion (single-
  1276.     image) morphs.
  1277.  
  1278.                                    -20-                                    
  1279.     Set Point Velocity
  1280.     ------------------
  1281.     This button allows you to (optionally) set the morph velocity
  1282.     of the currently selected point. Point morph velocities
  1283.     (speeds) are set by using graphs; you can pick from three
  1284.     preset graphs (standard linear, early and late) or you can
  1285.     create your own new graph (See "Set Vels", next) with any
  1286.     velocity curve you wish to use. The overall effect is that of
  1287.     portions of the image morphing at a different time than other
  1288.     portions; it adds a nice "liquid" feel to the morph if done
  1289.     gently. If done with a heavy hand, it makes the morph look
  1290.     very distorted, more of a horror-movie type of effect. When
  1291.     you set the velocity of a point, the associated velocity
  1292.     curve is saved in the morph points file (assuming you save
  1293.     it, of course). Be sure to use unique names for the
  1294.     individual curves.
  1295.     
  1296.     Set Vels
  1297.     --------
  1298.     This button opens the velocity curve control panel. Here, you
  1299.     can load, save and create velocity curves for use in your
  1300.     morphs. There are three preset (standard) curves available;
  1301.     early, late and normal. These curves are always set up, so
  1302.     you don't have to save them. If you CHANGE them, they will be
  1303.     automatically saved with the points file. In this case, make
  1304.     sure you change the name of the curve! Note that a point
  1305.     defaults to being assigned to the "normal" velocity curve if
  1306.     you've not changed it at all. One consequence of changing the
  1307.     normal curve is that all the points you did NOT assign will
  1308.     now have this new rate of change.
  1309.  
  1310.     Exit
  1311.     ----
  1312.     This exits the morph control panel without generating any frames.
  1313.  
  1314.                                  ----------
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.                                    -21-                                    
  1338.     List Requester (ARexx-based capability)
  1339.     =======================================
  1340.     This capability allows you to bring up a list requester inside the
  1341.     image processor from which the user can select an entry; once an item
  1342.     is selected, a value (selected by you) is returned to the calling
  1343.     ARexx script or macro.  The list environment for the PI Modules is
  1344.     implemented using this capability.  For more details, see the
  1345.     information describing the list environment for PI Modules. In
  1346.     particular, see the script "launch.rexx" and the file "list.list" for
  1347.     a complete example of how to use this powerful capability.
  1348.     
  1349.     Here is the format of the ARexx command:
  1350.     
  1351.           'listreq "Title text",listfilename,"keywords,etc"'
  1352.     
  1353.                                  ----------
  1354.     
  1355.     Load Image as Secondary
  1356.     =======================
  1357.     This option will appear when you already have a Primary image buffer,
  1358.     it allows you to load the next image in automatically assigned as the
  1359.     secondary buffer. If buffers besides the primary are already loaded,
  1360.     then you will also be presented with the option to replace an old
  1361.     buffer as secondary.
  1362.     
  1363.                                  ----------
  1364.     
  1365.     Load Image as Blend
  1366.     ===================
  1367.     This option will appear when you already have a Primary image buffer,
  1368.     it allows you to load the next image in automatically assigned as the
  1369.     blend buffer. If buffers besides the primary are already loaded,
  1370.     then you will also be presented with the option to replace an old
  1371.     buffer as blend.
  1372.     
  1373.                                  ----------
  1374.     
  1375.     Load Image as Brush
  1376.     ===================
  1377.     This option will appear when you already have a Primary image buffer,
  1378.     it allows you to load the next image in automatically assigned as the
  1379.     brush buffer. If buffers besides the primary are already loaded,
  1380.     then you will also be presented with the option to replace an old
  1381.     buffer as brush.
  1382.     
  1383.                                  ----------
  1384.     
  1385.     
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.                                    -22-                                    
  1397.     Co-ordinates
  1398.     ============
  1399.     The image processor now provides you with the option of displaying
  1400.     image X and Y co-ordinates while you work in the display. This option
  1401.     is controlled by a button in the Display panel called ``Show Cords''.
  1402.     
  1403.     There is another button that affects the co-ordinates, also in the
  1404.     Display panel. This one is called ``Drag Relative''. If you select it,
  1405.     then the co-ordinate display will show you the size of the object, or
  1406.     the distance of the pointer from the location you started drawing or
  1407.     selecting. This is useful if you need to create a specific size object.
  1408.     
  1409.     You can use the ``Cords at bottom'' button to switch the display from
  1410.     the top right to the bottom right. The ``s'' key will do the same
  1411.     thing when pressed while you are drawing.
  1412.     
  1413.     The following two ARexx commands allow to to set these conditions up:
  1414.     
  1415.         COORDS <show> [showattop]
  1416.         -------------------------
  1417.             Here, <show> is required, 0 means no, 1 means yes
  1418.         
  1419.         GRID <on> <xgrid> <ygrid> <xoffs> <yoffs>
  1420.         -----------------------------------------
  1421.             Here, <on> is required and should be 1 for on, 0 for off.
  1422.             If <on> is present, then the other four parameters must also be.
  1423.             <xgrid> and <ygrid> define the spacing of the grid. <xoffs>
  1424.             and <yoffs> define the offset from the top left edge of the
  1425.             image where the first vertice of the grid will occur. These
  1426.             last two parameters MUST be values less than the first two.
  1427.     
  1428.                                  ----------
  1429.     
  1430.     Grid
  1431.     ====
  1432.     The image processor provides a grid capability. This is enabled in the Display
  1433.     panel by the ``Use Grid'' button, and when on, allows you to draw only
  1434.     on the selected grid size.
  1435.     
  1436.     Grid size and position is controlled by two buttons in the Display
  1437.     panel called ``Set Grid Interactive'' and ``Set Grid Numeric''.
  1438.     
  1439.     If you use the interactive mode, you are presented with the main
  1440.     image, and you use the mouse to pull out a rectangle. That rectangle
  1441.     sets both the gird size (the same as the rectangle) and its origin
  1442.     (the same as the rectangles corners).
  1443.     
  1444.     If you use the numeric method, you are prompted for an X and Y size,
  1445.     as well as an X and Y origin. The sizes represent the width and height
  1446.     of each grid cell. The origin represents the distance from the upper
  1447.     left hand corner (0,0) of the image that the first ``snap'' point
  1448.     occurs.
  1449.     
  1450.                                  ----------
  1451.  
  1452.  
  1453.  
  1454.  
  1455.                                    -23-                                    
  1456.     Adding Noise
  1457.     ============
  1458.     The function F/x Random Dither allows you to add noise to an image if
  1459.     the region is too smooth for your taste. You can set the amplitude of
  1460.     the noise to your liking. You can select luma or an indpendant RGB
  1461.     dither.
  1462.     
  1463.                                  ----------
  1464.     
  1465.     Clip to exact size (F/x)
  1466.     ========================
  1467.     This capability allows you to specify a rectangular region, for
  1468.     instance 100 by 75, and then clip that exact size region from the
  1469.     primary image.
  1470.     
  1471.     This is useful when you are trying to create a smaller output image
  1472.     from an already existing larger image.
  1473.     
  1474.                                  ----------
  1475.     
  1476.     X-Specs Over-Under
  1477.     ==================
  1478.     This function takes an image that is interleaved for the X-Specs
  1479.     glasses and modifies that image to the X-Specs Over-Under format, used
  1480.     by some X-Specs viewers. The conversion takes place entirely in the
  1481.     Primary buffer.
  1482.     
  1483.                                  ----------
  1484.     
  1485.     X-Specs Interleave
  1486.     ==================
  1487.     This function takes an image that is over-under, that is, has one
  1488.     field over the other, and changes it to the interleaved format.  The
  1489.     conversion takes place entirely in the Primary buffer.
  1490.     
  1491.                                  ----------
  1492.     
  1493.     X-Specs Separate
  1494.     ================
  1495.     This function takes an interleaved X-Specs image in the Primary buffer
  1496.     and separates the two fields into two new buffers. You have the
  1497.     opportunity to name these buffers if you like; if not, they will be
  1498.     called Clip_N and Clip_N+1, where N is the current clip number.
  1499.     
  1500.     Note that this process creates two new buffers which have half the
  1501.     number of lines of the Primary buffer in addition to the Primary
  1502.     buffer, and as a result will require as much additional memory as the
  1503.     Primary buffer consumes.
  1504.     
  1505.                                  ----------
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.                                    -24-                                    
  1515.     F/x User Transforms
  1516.     ===================
  1517.     This is one of the most flexible, and potentially complicated,
  1518.     operations in the entire image processor.
  1519.     
  1520.     In simple terms, this provides you with a graph, where you have the
  1521.     opportunity to specify the resulting output from every level in a
  1522.     buffer. You can cause this function to create the exact operations for
  1523.     contrast, brightness, gamma, negative, histogram equalization and more.
  1524.     
  1525.     You can save (and reload later, of course) any transform curve you
  1526.     create; several are provided as ``boilerplate'' for you to try out. A
  1527.     special function also sets the transform curve to the current curve of
  1528.     the image itself; this can be used to equalize the image.
  1529.     
  1530.     The files that are saved are in a textual format. The file should
  1531.     contain at the beginning the four letters ``TFRM''. Following that
  1532.     first line, you can have one of three things on any line of the file.
  1533.     A blank line, which will be ignored; a line that begins with the ``*''
  1534.     character, which allows the line to contain any comment; or a number
  1535.     from zero to 255. Only the first 256 lines which contain numbers are
  1536.     read from the file. You can create, or modify, these files with any
  1537.     good text editor (but not a word processor).
  1538.     
  1539.     The curve itself can be drawn with the mouse, smoothed, or as
  1540.     mentioned previously, generated from the image.
  1541.     
  1542.     Note that there is a smaller graph area which contains the current
  1543.     transform curve of the image at the upper left.
  1544.     
  1545.                                  ----------
  1546.     
  1547.     Stretch (Scale, Zoom)
  1548.     =====================
  1549.     The Stretch Clip operation now has the ability to stretch to a
  1550.     particular percentage, as well as the original stretch to a particular
  1551.     pixel size.
  1552.     
  1553.                                  ----------
  1554.     
  1555.     Map to Range
  1556.     ============
  1557.     This tool is similar to the Map To Palette capability, except it uses
  1558.     the current range, and (since ranges may be smaller than 256 colors)
  1559.     the range will be automatically interpolated (smoothed) if the range
  1560.     is 255 or less colors.
  1561.     
  1562.                                 ----------
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.                                    -25-                                    
  1574.     Color Balance
  1575.     =============
  1576.     Color Balance is a tool that re-balances the entire image, based upon
  1577.     a region you specify.
  1578.     
  1579.     The principle underlying Color Balance is the same as that used by
  1580.     Grey and White balance operations, but with a twist.
  1581.     
  1582.     The assumption made is that you can (by observing) locate an area on
  1583.     the image that you want to be tinted to an exact shade of a particular
  1584.     color. If you can, you identify this area using the region select
  1585.     tools, and the function will re-balance the entire image based upon
  1586.     that information.
  1587.     
  1588.     What you end up with is a tinted image; similar to using a dye when
  1589.     developing film.
  1590.     
  1591.                                  ----------
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.                                    -26-                                    
  1633.     Black Balance
  1634.     =============
  1635.     Black Balance is a tool that re-balances the entire image, based upon
  1636.     a region you specify.
  1637.     
  1638.     The principle underlying Black Balance is the same as that used by
  1639.     Grey and White balance operations.
  1640.     
  1641.     The assumption made is that you can (by observing) locate an area on
  1642.     the image that should have been black. If you can, you identify this
  1643.     area using the region select tools, and the function will re-balance
  1644.     the entire image based upon that information.
  1645.     
  1646.     This is very effective for images that have low contrast or coloration.
  1647.     
  1648.                                  ----------
  1649.     
  1650.     Force Dynamic
  1651.     =============
  1652.     This operation is similar to the Dynamic Range operation. To
  1653.     understand the difference, we need to look at Dynamic Range.
  1654.     
  1655.     The Dynamic Range operation examines the entire image, finds the
  1656.     darkest and lightest regions, and then linearly expands the contrast
  1657.     and moves the brightness center appropriately. This results in the
  1658.     maximum possible contrast without losing any image information.
  1659.     
  1660.     Force Dynamic does the same thing, except that the examination for
  1661.     maximum and minimum regions is only performed in the region you
  1662.     specify, not the entire image. As a result, Force Dynamic can indeed
  1663.     lose image data.
  1664.     
  1665.     One possible use would be for an image that was contained as a sub-
  1666.     image within another --- for instance, a picture on a television in a
  1667.     larger image. You can use Force Dynamic on the TV image, and that
  1668.     image will be brought to it's best possible contrast (and the rest of
  1669.     the image will be seriously damaged).
  1670.     
  1671.                                  ----------
  1672.     
  1673.     X-Specs Conversion
  1674.     ==================
  1675.     This operation allows you to create an X-Specs interleave format image
  1676.     from the image in the Primary buffer and the image in the Secondary
  1677.     buffer. You can even do this with dissimilar size images!
  1678.     
  1679.                                  ----------
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.                                    -27-                                    
  1692.     Absolute Resample - no anti-aliasing
  1693.     ====================================
  1694.     The stepped Zoom operation now allows you to reduce an image's
  1695.     resolution without averaging neighboring pixels; this was added so
  1696.     that the automatic expansion of HAM-E images to hi-resolution pixels
  1697.     (with synthesis of intervening pixels using the same method as our
  1698.     advanced Anti-Alias engine) could be reversed without any unwanted
  1699.     smoothing of the image.
  1700.     
  1701.     Suggested use is to use it on the horizontal axis only.
  1702.     
  1703.                                  ----------
  1704.     
  1705.     Merge with Render from Range
  1706.     ============================
  1707.     This operation will take a range of colors you have defined in the
  1708.     palette and render the secondary image into the primary image using
  1709.     only those colors. The operation is similar to a merge, in that the
  1710.     entire secondary image is rendered into the region you specify.
  1711.     
  1712.     For instance, if you have a 4 color range that consists of black,
  1713.     white, and two intermediate grey levels, then that's how the image
  1714.     will be placed into the primary image. This allows you to use
  1715.     unlimited creativity in color compositions.
  1716.     
  1717.     One option is to use dither when rendering using the range colors.
  1718.     Dither effectively increases the available color space, and images
  1719.     will look more accurate, as well as somewhat ``rougher''.
  1720.     
  1721.     Another option is to turn ``Excursion Off'' for the render. This is
  1722.     only effective if dither is on; the effect is to increase the number
  1723.     of colors available in dither, but it will also make the iamge appear
  1724.     even rougher.
  1725.     
  1726.     Another option allows you to select a stretched merge, or a sub-
  1727.     sampled merge.
  1728.     
  1729.     You can use blending in the normal fashion with this operation, also.
  1730.     You should be aware that when blending is on, more colors are used to
  1731.     composite the image, as various levels of the colors in the range are
  1732.     blended with the colors in the primary image.
  1733.     
  1734.                                  ----------
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.                                    -28-                                    
  1751.     Additional Render Controls and Capabilties
  1752.     ==========================================
  1753.     Our image processor's Amiga mode rendering procedures have been
  1754.     completely re-written during the production of revisions 7.02 and
  1755.     7.03. We are confident that our rendering capabilities now meet or
  1756.     exceed those of any other product currently available for final image
  1757.     quality. Comparison renders performed at Black Belt Systems using the
  1758.     latest releases of commercial Amiga packages which also render to
  1759.     Amiga mode images provide the basis for this confidence. If you have
  1760.     other software which performs these tasks, we encourage you to make
  1761.     the same comparisons. Knowing what package performs better in this
  1762.     regard will serve you well as your create your Amiga mode images.
  1763.     
  1764.     Details
  1765.     =======
  1766.     The control "Turn Off Excursion Limit" may now be used to modify the
  1767.     quality of most render modes. It works with dithering to provide a
  1768.     larger color space. If you turn off the dither when rendering, this
  1769.     has no applicability. If you turn excursion off, the dither operations
  1770.     can reach more colors in the color space. The image may appear rougher
  1771.     as a result. We suggest you try things both ways before committing to
  1772.     a final render. Most images will be better with this button depressed.
  1773.     
  1774.     All Amiga render modes now have multiple dither choices for your
  1775.     rendering convenience; you may currently choose from:
  1776.     
  1777.      No Dither ------- Uses the nearest color in the palette; contours.
  1778.          
  1779.      2-Point EDD ----- Most color accuracy; roughest image. Heavy dithering
  1780.     >Floyd-Steinberg - Best compromise; not too rough, good color accuracy 
  1781.      Jarvis ---------- Smooth; color begins to show contouring (mach bands)
  1782.      Stucki ---------- Extremely smooth; contouring quite evident
  1783.      Random F-S ------ Rough; good color accuracy, tends to hide errors
  1784.      Dual Random F-S - Not so rough; good color accuracy. Less clumping.
  1785.     
  1786.     You may modify any dither method with either Left->Right scan or
  1787.     Serpentine scan. Serpentine is almost always better.
  1788.     
  1789.     For low color renders that pick new color registers, 16 colors for
  1790.     instance, you should try "Chekov Forcing" and see if your image
  1791.     renders better with it on. This will cause the color picking code to
  1792.     choose slightly different registers which will help portions of the
  1793.     image that have color "hot spots" to render more accurately.
  1794.     
  1795.     Our suggestion for the best render quality for most images (there will
  1796.     be a few exceptions to this) is to use the Floyd-Steinberg dither,
  1797.     serpentine scan, excursion limiting off. Chekov forcing is a 50-50
  1798.     kind of thing. Sometimes it helps a lot, but it may make the render
  1799.     worse.
  1800.     
  1801.                                  ----------
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.                                    -29-                                    
  1810.     Compose with Logical OR
  1811.     =======================
  1812.     This image composition operation will combine the Secondary image into
  1813.     the Primary image using the logical OR operation.
  1814.     
  1815.                                  ----------
  1816.     
  1817.     Compose with Logical AND
  1818.     ========================
  1819.     This image composition operation will combine the Secondary image into
  1820.     the Primary image using the logical AND operation.
  1821.     
  1822.                                  ----------
  1823.     
  1824.     Multiple Blend Technique Application
  1825.     ====================================
  1826.     You can now use any of the three blending techniques in combination
  1827.     with each other. The manual implies that the blending techniques are
  1828.     independant and exclusive. While you can still use them independantly,
  1829.     you can also use them together in any combination.
  1830.     
  1831.                                  ----------
  1832.     
  1833.     Smooth Edge Blending as a Percentage
  1834.     ====================================
  1835.     The smooth edge blending capability now has the ability to be
  1836.     specified as a percentage of the region's size. The specify by number
  1837.     of pixels is still intact, of course. This will help you use the
  1838.     technique on larger images, and also allows you to apply similar
  1839.     looking edge blends without having to re-specify the blend lengths.
  1840.     
  1841.                                  ----------
  1842.     
  1843.     Masks
  1844.     =====
  1845.     The image processor can now save masks with images, contrary to the
  1846.     statement in the manual that it does not. These masks are in a
  1847.     proprietary format readable by the image processor, and will be
  1848.     (should be) ignored by other IFF readers.
  1849.     
  1850.     The PMBC Public Interface module will also save and load masks with
  1851.     images.
  1852.     
  1853.                                  ----------
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.                                    -30-                                    
  1869.     Color Separations
  1870.     =================
  1871.     
  1872.     General
  1873.     -------
  1874.     The image processor now has full RGB, CMY and CMYK color separation
  1875.     capability for both 12 and 24 bit images. The color separation tool is
  1876.     located in the File I/O panel; it is extremely flexible and allows you
  1877.     to save multiple control parameter settings for your various color
  1878.     separation needs.
  1879.     
  1880.     Color separations are positive, and so where you expect a lot of ink
  1881.     to be on the paper, the image on screen will have the most color
  1882.     (``ink''). If you use a color map, the image will be the color of the
  1883.     separation (cyan, for instance) where the paper is white, which is
  1884.     somewhat counter-intuitive, and it will be black where it is maximum
  1885.     cyan.
  1886.     
  1887.                                  ----------
  1888.     
  1889.     Under Color Removal
  1890.     -------------------
  1891.     This control sets the amount of color (cyan, magenta, yellow) ink
  1892.     removed when they can be replaced by black.
  1893.     
  1894.                                  ----------
  1895.     
  1896.     Gray Component Replacement
  1897.     --------------------------
  1898.     This control sets the amount of black ink that replaces what was
  1899.     removed by the Under Color Removal tool.
  1900.     
  1901.                                  ----------
  1902.     
  1903.     Magenta Ink Mix Correction
  1904.     --------------------------
  1905.     This control compensates for impure ink colors, IE, the cyan ink is
  1906.     not pure cyan. The default value is set for Inkum Inks, which we
  1907.     strongly recommend for inkjet use.
  1908.     
  1909.                                  ----------
  1910.     
  1911.     Yellow Ink Mix Correction
  1912.     -------------------------
  1913.     This control compensates for impure ink colors, IE, the magenta ink is
  1914.     not pure magenta. The default value is set for Inkum Inks, which we
  1915.     strongly recommend for inkjet use.
  1916.     
  1917.                                  ----------
  1918.     
  1919.     Output 12 Bit
  1920.     -------------
  1921.     This setting allows you to create 12 bit color separations, needed for
  1922.     some Amiga DTP programs. You should always use 24 bit separations for
  1923.     professional work.
  1924.     
  1925.                                  ----------
  1926.  
  1927.                                    -31-                                    
  1928.     Output 24 Bit
  1929.     -------------
  1930.     The setting allows you to create 24 bit accurate color separations.
  1931.     
  1932.                                  ----------
  1933.     
  1934.     Gray CMAP
  1935.     ---------
  1936.     This section causes a grey CMAP to be placed in the output file, which
  1937.     is required for proper color separation operation. The alternative,
  1938.     Color CMAP, makes the images easier to understand and view, but is not
  1939.     useful for real separations.
  1940.     
  1941.     Color CMAP
  1942.     ----------
  1943.     This places a color CMAP in the separation file, which will let you
  1944.     visually cue in to how much ink will be used when observing the files.
  1945.     Do not use this settings for final work; You must place a Gray CMAP in
  1946.     the file for it to be useful.
  1947.     
  1948.                                  ----------
  1949.     
  1950.     Set To Default
  1951.     --------------
  1952.     This control forces the Under Color Removal, Gray Component
  1953.     Replacement, Magenta Ink Correct, and Yellow Ink Correct to their
  1954.     respective default values.
  1955.     
  1956.     Set To No Correction
  1957.     --------------------
  1958.     Just as it says. The colors are created via a straight mathematical
  1959.     transform with no correction for the shortcomings of inks and paper.
  1960.     
  1961.     Generate CMYK Separation
  1962.     ------------------------
  1963.     This produces four output files, cyan, magenta, yellow and black. This
  1964.     is what you will typically use for professional separations.
  1965.     
  1966.     Generate CMY Separation
  1967.     -----------------------
  1968.     This produces three output files, cyan, magenta and yellow. This is
  1969.     what you will typically use for three color printer ribbons.
  1970.     
  1971.     Generate RGB Separation
  1972.     -----------------------
  1973.     This allows you to separate the image into it's respective R, G and B
  1974.     components. We don't know what use it is, but others have this
  1975.     capability, so we added it also.
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.                                    -32-                                    
  1987.     Save Settings
  1988.     -------------
  1989.     This allows you to save the current settings of the Color Separation
  1990.     panel. This is very useful for situations where you'll be outputting
  1991.     to various print agencies or printers, and the settings are different.
  1992.     
  1993.     Note that if you save a settings file and name it ``Default.csep'', it
  1994.     will be automatically loaded when the software starts. It should be
  1995.     located either in the current directory or drawer (not recommended) or
  1996.     in the s: assignment (highly recommended).
  1997.     
  1998.                                  ----------
  1999.     
  2000.     Load Settings
  2001.     -------------
  2002.     This loads any settings that you saved.
  2003.     
  2004.                                  ----------
  2005.     
  2006.     Extensions
  2007.     ----------
  2008.     You can preset the extensions used on the color separation files if
  2009.     you like using the four text entry fields provided.
  2010.     
  2011.                                  ----------
  2012.     CMYK and RGB Recombination
  2013.     ==========================
  2014.     Recombinations are done with the compose panel. The general idea here
  2015.     is that you prepare a blank buffer (White for CMYK, Black for RGB) to
  2016.     receive the recombined image. Each portion of the image to be
  2017.     recombined is loaded as a secondary buffer, then processed using the
  2018.     matching recombination function. For instance, to recombine a CMY
  2019.     image, you would create an all-white buffer of the size you want the
  2020.     output image. Now, load the Cyan (C) portion of the separated image.
  2021.     Make it the secondary and recombine that portion. Now load the M and Y
  2022.     portions and do the same.
  2023.     
  2024.     For CMY or CMYK recombination, you need to know what the UCR, GCR and
  2025.     ink correction settings were or the image colors will come out wrong.
  2026.     To do this with an RGB image, the process is the same except for one
  2027.     thing; you need to start with an all-Black buffer instead of a white
  2028.     one. This is technically because RGB colors are additive and CMYK
  2029.     colors are subtractive.
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.                                    -33-                                    
  2046.     Genlocking
  2047.     ==========
  2048.     Creating a Transparent Region
  2049.     -----------------------------
  2050.     Rendering now allows you to specify Transparency for genlocking by
  2051.     marking a region that you do not want to be transparent. So, if you
  2052.     have drawn a graphic you want to appear in the top right of the frame,
  2053.     just move the object there using the usual tools, then when you
  2054.     render, just define that object as the ``non-transparent'' region. The
  2055.     entire remaining portion of the image will be drawn using the Amiga
  2056.     (or HAM-E) ``color zero'', which will make it transparent for
  2057.     genlocking purposes.
  2058.     
  2059.     Keep in mind that not using the color zero color can substantially
  2060.     reduce the render quality of an image, especially when you are using
  2061.     fewer colors.
  2062.     
  2063.                                  ----------
  2064.     
  2065.     Color-Keying: Transparency by Color
  2066.     -----------------------------------
  2067.     You can also create a genlock (transparent) region by selecting the
  2068.     Color Gen Mask button. This will cause the image to have transparent
  2069.     (genlock) areas wherever the color in the image matches the color
  2070.     selected in the process panel using "define color". The color radius
  2071.     also affects the genlock area generation.
  2072.     
  2073.     An example would be where you have a picture of a model you have taken
  2074.     against an aqua background. Select the aqua area as the "defined
  2075.     color", and then use Color Gen Mask to build the genlocked image. The
  2076.     image will be transparent everywhere but where the model is.
  2077.     
  2078.     Of course, if the model is wearing any aqua color, or has aqua eyes,
  2079.     that region will be transparent as well. You can fix this up by
  2080.     changing the colors of that region using the paint tools.
  2081.     
  2082.     Keep in mind that not using the color zero color can substantialy
  2083.     reduce the render quality of an image, especially when you are using
  2084.     fewer colors.
  2085.     
  2086.                                  ----------
  2087.     
  2088.     Creating Non-transparent Renders
  2089.     --------------------------------
  2090.     If you want a render to be totally non-transparent (that is, doesn't
  2091.     use the Amiga color zero anywhere), then select the "Identify the
  2092.     genlock non-transparent area" button an choose "entire image" as the
  2093.     region. The entire image will be non-transparent.
  2094.     
  2095.     Keep in mind that not using the color zero color can substantialy
  2096.     reduce the render quality of an image, especially when you are using
  2097.     fewer colors.
  2098.     
  2099.                                  ----------
  2100.  
  2101.  
  2102.  
  2103.  
  2104.                                    -34-                                    
  2105.     DCTV
  2106.     ====
  2107.     
  2108.     Compatibility
  2109.     -------------
  2110.     The image processor can now load DCTV files from the 1.1 version of
  2111.     the DCTV software as well as the original software format and the
  2112.     library format.
  2113.     
  2114.     Filtering
  2115.     ---------
  2116.     The DCTV library allows you to filter the RGB image that is used to
  2117.     create the final DCTV image. If you select the "Use DCTV RGB Filter"
  2118.     button when you render DCTV images, this filter is called into action.
  2119.     Again, this function is entirely dependant upon the code in the
  2120.     DCTV.library software, and Black Belt Systems is not responsible for
  2121.     any image degradation you may experience in the final DCTV image.
  2122.     
  2123.                                  ----------
  2124.     
  2125.     Brushes
  2126.     =======
  2127.     
  2128.     Transparent Brush Cutting
  2129.     -------------------------
  2130.     When you select "Cut Out New Brush", you will now get a two button
  2131.     panel that asks you if you'd like to do this as a transparent
  2132.     operation or just as a solid area.
  2133.     
  2134.     If you do select transparency, the transparent portion of the cut will
  2135.     occur where the background color (See Color Definition, next) is
  2136.     similar to the color in the cut region. The color radius affects the
  2137.     transparent region calculations.
  2138.     
  2139.                                  ----------
  2140.     
  2141.     Color Definition
  2142.     ================
  2143.     
  2144.     Adjust Foreground Color
  2145.     -----------------------
  2146.     This new option within the paint panel allows you to immediately
  2147.     adjust the foreground color using RGB controls.
  2148.     
  2149.                                  ----------
  2150.     
  2151.     Sample to Foreground Color
  2152.     --------------------------
  2153.     This new option within the paint panel allows you to immediately
  2154.     adjust the foreground color by selecting a region on the Primary image.
  2155.     
  2156.                                  ----------
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.                                    -35-                                    
  2164.     Adjust Background Color
  2165.     -----------------------
  2166.     This new option within the paint panel allows you to immediately
  2167.     adjust the background color using RGB controls.
  2168.     
  2169.                                  ----------
  2170.     
  2171.     Sample to Background Color
  2172.     --------------------------
  2173.     This new option within the paint panel allows you to immediately
  2174.     adjust the background color by selecting a region on the Primary image.
  2175.     
  2176.                                  ----------
  2177.     
  2178.     Palette Mapping
  2179.     ===============
  2180.     In the main paint panel there is a new option called "Palette
  2181.     Mapping".  This function is for artists who wish to change colors
  2182.     which have already been painted with, from the palette or from a range.
  2183.     
  2184.     To do this:-
  2185.     
  2186.          (1) Copy the range that you have drawn with into the
  2187.              current palette,
  2188.     
  2189.          (2) Choose "Palette Mapping" and "Establish Map", you will
  2190.              then be able to select the area to be affected,
  2191.     
  2192.          (3) Adjust the colors in the palette to the new colors
  2193.              you want,
  2194.     
  2195.          (4) Choose "Palette Mapping" and "Apply Palette Changes";
  2196.              This will change the drawn colors in the image in the
  2197.              same way you changed the palette colors.
  2198.     
  2199.     Note that the "Establish Map" function only works on colors that
  2200.     exactly match those in the palette.  Also, "Toss Map" can be used to
  2201.     free up some memory after you have finished Palette Mapping.
  2202.     
  2203.                                  ----------
  2204.     
  2205.     Paint Settings To Disk
  2206.     ======================
  2207.     In the Paint Panel are Load and Save Paint Settings buttons.  This
  2208.     saves all the settings you are then using to paint with including the
  2209.     foreground and background colors.
  2210.     
  2211.                                  ----------
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.                                    -36-                                    
  2223.     New fill modes
  2224.     ==============
  2225.     
  2226.     Brush Emboss
  2227.     ------------
  2228.     This fill mode will emboss the image with a pattern derived from the
  2229.     brightness of the current brush. The fill proceeds in a regular
  2230.     rectangular fashion.
  2231.     
  2232.                                  ----------
  2233.     
  2234.     Brush Brick Emboss
  2235.     ------------------
  2236.     This fill mode is similar to Brush Emboss, but every other line of
  2237.     repeated brush patterns is offset by 1/2 the brush width, resulting in
  2238.     a fill that has the 50% offset characteristic of brick architecture.
  2239.     
  2240.                                  ----------
  2241.     
  2242.     Poly-range Fills
  2243.     ----------------
  2244.     Polyrange fills are a new and unusual type of fill developed by Black
  2245.     Belt specifically for our image processing software.
  2246.     
  2247.     The best way to describe a polyrange is to begin with a polygon. Let's
  2248.     take a polygon in the form of a triangle as our example. A triangle
  2249.     has three points. What polyfill will do is assign a color to each of
  2250.     those points from the range you supply, assuming only that the range
  2251.     you supply has three points.
  2252.     
  2253.     So, if you have a range that is red, green, blue, yellow... etc, then
  2254.     the triangle will have red, green and blue assigned to the three
  2255.     points of the corners. Now, there are two different ways that
  2256.     polyranges will work, depending on the Smooth Range fill setting.
  2257.     
  2258.     If smooth range fill is off, then the pixels inside the triangle will
  2259.     be filled according to the vertex (point) they are nearest to. So,
  2260.     pixels near the red vertex will also be red, and so on.
  2261.     
  2262.     If smooth range fill is on, then the pixels inside the triangle will
  2263.     be filled with all three colors, proportionally to how near they are
  2264.     to that particular vertex. So, for pixels right at the red vertex, you
  2265.     get red. For one halfway between red and green, but far away from
  2266.     blue, you'll get a yellow color.
  2267.     
  2268.     Keep in mind that polyranges can work with any number of points, so
  2269.     you can make some really spectacular fills. Note that large numbers of
  2270.     vertexes will cause long computation times, however.
  2271.     
  2272.     Rectangles and full screen polyrange fills act like four vertex
  2273.     polygons, and so require a four color range. If you have less colors
  2274.     in the range than there are vetexes in the polygon, then the range
  2275.     will repeat along the vertexes untill all vertexes are assigned a
  2276.     color.
  2277.     
  2278.                                  ----------
  2279.  
  2280.  
  2281.                                    -37-                                    
  2282.     Freehand and Elliptical Polyranges
  2283.     ----------------------------------
  2284.     We've done something wild, here. Since a freehand area or an ellipse
  2285.     are not composed of vertexes as polygons, polyarcs, rectangles and so
  2286.     on are, we need a different way to apply polyranges to them.
  2287.     
  2288.     What we do is find out the length of the edge of the freehand area or
  2289.     ellipse, and the we distribute the entire range of colors around the
  2290.     perimeter of the region.
  2291.     
  2292.     Let's say you have a 6 color range (you might want to try this, the
  2293.     results are stunning!) or Red, Yellow, Green, Aqua, Blue, Purple.
  2294.     These colors are placed at points equidistant from each other around
  2295.     the perimiter of the object. So, if you draw a very round ellipse,
  2296.     with smooth range on, you get a gorgeous ``color wheel''. Freehand
  2297.     areas provide very strange and beautiful results.
  2298.     
  2299.     Again, be careful not to use ranges with very many colors unless you
  2300.     are prepared to wait a long time.
  2301.     
  2302.                                  ----------
  2303.     
  2304.     Dual Range Fills
  2305.     ================
  2306.     The image processor now provides for a new type of fill that uses two
  2307.     separate color ranges to derive fill colors. These can be utilized
  2308.     once you have selected two ranges; you can select both from the paint
  2309.     panel, the new button to pick the secondary range is called ``Select
  2310.     Second Range''. Once you have picked the two ranges, you can use the
  2311.     following fill tools:
  2312.     
  2313.     Dual Horizontal Range
  2314.     ---------------------
  2315.     This fill mode places the two ranges above, and below the region to be
  2316.     filled. The pixels in the filled area are derived as a function of the
  2317.     distance between the top range, and the bottom range; they change
  2318.     horizontally across the filled region as they utilize different pixels
  2319.     from the two adjacent ranges.
  2320.     
  2321.     Dual Vertical Range
  2322.     -------------------
  2323.     This fill mode places the two ranges left, and to the right of the
  2324.     region to be filled. The pixels in the filled area are derived as a
  2325.     function of the distance between the left range, and the right range;
  2326.     they change vertically across the filled region as they utilize
  2327.     different pixels from the two adjacent ranges.
  2328.     
  2329.     Dual Horizontal Warp Range
  2330.     --------------------------
  2331.     This fill mode places the two ranges above, and below the region to be
  2332.     filled. The pixels in the filled area are derived as a function of the
  2333.     distance between the top range, and the bottom range; they change
  2334.     horizontally across the filled region as they utilize different pixels
  2335.     from the two adjacent ranges. The ranges are ``pinched'' together near
  2336.     the edges of the filled region.
  2337.  
  2338.  
  2339.  
  2340.                                    -38-                                    
  2341.     Dual Vertical Warp Range
  2342.     ------------------------
  2343.     This fill mode places the two ranges left, and to the right of the
  2344.     region to be filled. The pixels in the filled area are derived as a
  2345.     function of the distance between the left range, and the right range;
  2346.     they change vertically across the filled region as they utilize
  2347.     different pixels from the two adjacent ranges. The ranges are
  2348.     ``pinched'' together near the edges of the filled region.
  2349.     
  2350.                                  ----------
  2351.     Dual Range Example
  2352.     ------------------
  2353.     You need to create two different ranges. You can use as few as two
  2354.     colors in the first range, and five in the second range. You're going
  2355.     to be using the "Smooth Range" modifier, so you'll get a beautiful
  2356.     spread of colors anyway.
  2357.     
  2358.     Make the first range all dark blue. That's right, NO color change in
  2359.     the range.
  2360.     
  2361.     Make the second range go from aqua to orange to aqua. That's easy to
  2362.     do, just set one end of the range of colors to orange, one to aqua,
  2363.     and choose mirror range.
  2364.     
  2365.     From the palette display, select the aqua-orange-aqua range and place
  2366.     this in the range panel. Return to the palette, and then place the
  2367.     Blue-Blue range in the range panel. Since the Blue-Blue is the last
  2368.     range you entered, it is the current range. Now, exit back to the
  2369.     paint panel.
  2370.     
  2371.     Here, select the Second range (the aqua-orange-aqua one) using the
  2372.     control provided for that purpose.
  2373.     
  2374.     Go into the Fill panel, select "Smooth Range" and also select the fill
  2375.     mode as "Dual Horizonal Range". In this context, "Horizontal" means
  2376.     the way that the range lies on the image - NOT the way that the fill
  2377.     occurs. Here is how the fill will work:
  2378.     
  2379.                           Top of fill
  2380.     Range 1    Blue <----------------------> Blue
  2381.                       ^        ^         ^
  2382.                       |        |         |
  2383.                       |        |         |         Filled area where color
  2384.                       |        |         |     <-- changes smoothly between
  2385.                       |        |         |         the two adjacent ranges
  2386.                       |        |         |
  2387.                       v        v         v
  2388.     Range 2    Aqua <-------Orange---------> Aqua
  2389.                         Bottom of fill
  2390.     
  2391.     You're ready to try the fill itself now. Select a rectangular region
  2392.     and fill it, or do the entire image if you'd like.
  2393.     
  2394.     You should have blue at the top, and this should fade down to an
  2395.     orange glow in the middle where the sun has just dissapeared.
  2396.     
  2397.                                  ----------
  2398.  
  2399.                                    -39-                                    
  2400.     Any Angle Range Fill
  2401.     --------------------
  2402.     This powerful fill mode consists of an angle entry field and a mode
  2403.     button in the fill modes panel.
  2404.     
  2405.     You can specify any possible angle, either positive or negative.
  2406.     
  2407.                                  ----------
  2408.     
  2409.     DPI operations
  2410.     ==============
  2411.     There are several operations that work within the concept of "Dots-
  2412.     Per-Inch".  One is accessed in the Buffer panel; it allows you to "Set
  2413.     Current DPI and Size" for a buffer. For instance, you can say, this
  2414.     buffer is 8.5x11, or that it is 200 DPI. There is an operation in the
  2415.     F/x panel that allows you to rescale using DPI as the criteria. You
  2416.     may find this particularly useful if you are into printed graphics.
  2417.     
  2418.                                  ----------
  2419.     
  2420.     Initialize buffer to Color
  2421.     ==========================
  2422.     This brings up the RGB panel and allows you to create the buffer
  2423.     filled with a specific color.
  2424.     
  2425.                                  ----------
  2426.     
  2427.     Setup Panel
  2428.     ===========
  2429.     There is now a setup button in the image processor that provides you
  2430.     with the ability to specify Interlace or Non-interlace when the
  2431.     program starts.
  2432.     
  2433.                                  ----------
  2434.     
  2435.     Information Panel
  2436.     =================
  2437.     Other Buffers
  2438.     -------------
  2439.     This tool allows you to obtain X:Y pixel information, total memory
  2440.     used, parent, and other information about any buffer in the system.
  2441.     
  2442.                                  ----------
  2443.     
  2444.     Display
  2445.     =======
  2446.     Fast HAM draw mode
  2447.     ------------------
  2448.     This display mode uses a pre-calculated palette for fast drawing.
  2449.     Future updates of the image processing software will concentrate on
  2450.     improving the speed of this tool; it will be the very first to be re-
  2451.     coded into assembly language.
  2452.     
  2453.                                  ----------
  2454.  
  2455.  
  2456.  
  2457.  
  2458.                                    -40-                                    
  2459.     ARexx Port Names
  2460.     ================
  2461.     Here's something we inadvertantly left out of the manual... the port
  2462.     names for the ARexx ports in Imagemaster, Imagemaster F/c, and Image
  2463.     Professional. Here they are:
  2464.     
  2465.         IM_Port              For both IM and IM F/c.
  2466.         IP_Port              For Image Professional.
  2467.     
  2468.                                  ----------
  2469.     
  2470.     Render command changed
  2471.     ======================
  2472.     On page 177 of the manual, the parameters given are not complete.
  2473.     Parameter number six <name>, described on page 178 (correctly), is
  2474.     missing.  Make sure you take this into account if you are using the
  2475.     render command. Here is the correct command string:
  2476.     
  2477.     render <lace> <width> <height> <mode> <usep> <name> [cols]
  2478.     
  2479.                                  ----------
  2480.     
  2481.     Filerequest command changed
  2482.     ===========================
  2483.     This command now returns the string 'FR_CANCELLED' if the user cancels
  2484.     the file requester. This allows you to abort operations in progress.
  2485.     
  2486.                                  ----------
  2487.     
  2488.     Newbuf command (changed)
  2489.     ========================
  2490.     The newbuf command now has the following syntax:
  2491.     
  2492.         newbuf <width> <height> [name] [MASK]
  2493.     
  2494.     The new keyword MASK allows you to specify a new buffer with a local
  2495.     mask plane available. This is required if you are writing a PI Load
  2496.     module that will need a local mask (for a non-rectangular image).
  2497.     
  2498.     Note that there are two optional parameters here; you'll need to
  2499.     provide a NULL string for the "name" parameter if you want the
  2500.     automatic naming to work, as in the following example:
  2501.     
  2502.             'newbuf "'||width||'","'||height||'","","MASK"';
  2503.     
  2504.                                  ----------
  2505.     
  2506.     Firecracker-specific manipulation (new commands)
  2507.     ================================================
  2508.     The ARexx commands FCHIDE and FCSHOW have been added; these turn the
  2509.     FC24 display on and off. They have no effect (and cause no error) in
  2510.     the other versions of the image processor.
  2511.     
  2512.                                  ----------
  2513.  
  2514.  
  2515.  
  2516.  
  2517.                                    -41-                                    
  2518.     Finding the mouse location from ARexx (new command)
  2519.     ===================================================
  2520.     The ARexx command "WHEREMOUSE" returns the mouse's current co-
  2521.     ordinates using the image resolution.
  2522.     
  2523.                                  ----------
  2524.     
  2525.     coords <show> <top> (new command)
  2526.     =================================
  2527.     This allows you to turn the co-ordinate facility on and off from
  2528.     ARexx, and also to control the placement of them.
  2529.     
  2530.     If show is 1, then co-ordinates are on. If 0, then they are off.  If
  2531.     top is 0, then the co-ordinates are displayed at the top of the
  2532.     screen. If 1, then at the bottom.
  2533.     
  2534.                                  ----------
  2535.     
  2536.     grid <on> <xgrid> <ygrid> <xoff> <yoff> (new command)
  2537.     =====================================================
  2538.     This command allows you to set a particular grid. When on is 0, the
  2539.     grid is off. When 1, grid is on. xgrid and ygrid allow you to set the
  2540.     spacing between grid lines; xoff and yoff allow you to set any offset
  2541.     from the top left corner (0,0) of the image.
  2542.     
  2543.                                  ----------
  2544.     
  2545.     newasprimary (new command)
  2546.     ==========================
  2547.     This is similar to the newbuf ARexx command, except that the buffer it
  2548.     creates is always the primary buffer. The newbuf command would create
  2549.     the new buffer as the primary buffer only if there was no previously
  2550.     existing primary buffer; otherwise, the new buffer was just added as
  2551.     ``another'' buffer in the system. When you use OPTIONS RESULTS in the
  2552.     ARexx script so that the image processor knows it can return data to
  2553.     you, the number of the buffer created will be returned.
  2554.     
  2555.     This new command ensures that the newly created buffer will be the
  2556.     primary buffer, regardless of previously existing buffers in the
  2557.     system.
  2558.     
  2559.                                  ----------
  2560.     
  2561.     newbuf (changed)
  2562.     ================
  2563.     The ARexx newbuf command now returns the number of the buffer it
  2564.     creates if you use OPTIONS RESULTS in the ARexx script.
  2565.     
  2566.                                  ----------
  2567.     
  2568.     fromdigiview (changed)
  2569.     ======================
  2570.     The ARexx fromdigiview command now returns the number of the buffer it
  2571.     creates if you use OPTIONS RESULTS in the ARexx script.
  2572.     
  2573.                                  ----------
  2574.  
  2575.  
  2576.                                    -42-                                    
  2577.     dome (changed)
  2578.     ==============
  2579.     The ARexx dome command now has an optional extra parameter,
  2580.     "effect". You call it this way:
  2581.  
  2582.         'dome 60 50'; /* dome <radius> [effect] */
  2583.     or...
  2584.         'dome 60';
  2585.  
  2586.     If you don't use the extra parameter, it defaults to 100%
  2587.  
  2588.                                   ----------
  2589.     caric (changed)
  2590.     ===============
  2591.     The ARexx caric command now has an optional extra parameter,
  2592.     "effect". You call it this way:
  2593.  
  2594.         'caric 60 50'; /* caric <radius> [effect] */
  2595.     or...
  2596.         'caric 60';
  2597.  
  2598.     If you don't use the extra parameter, it defaults to 100%
  2599.  
  2600.                                  ----------
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.                                    -43-                                    
  2636.     imagemaspect (new command)
  2637.     ==========================
  2638.     This command returns the aspect ratio of the chosen buffer.
  2639.     
  2640.     'imagemaspect '||BUFFERNUM'; /* get aspect ratio */
  2641.     
  2642.     loadimask (new command)
  2643.     =======================
  2644.     saveimask (new command)
  2645.     =======================
  2646.     This command loads the image mask (the valid image area mask) from a
  2647.     saved mask file.
  2648.     
  2649.     'loadimask <complete_filename> [mode]'
  2650.            where...
  2651.                       mode   1 = Replace existing mask (default) 
  2652.                              2 = OR
  2653.                              3 = AND
  2654.                              4 = XOR
  2655.                              5 = MINUS
  2656.    
  2657.     The opposite command is:
  2658.         'saveimask <complete_filename>';
  2659.     
  2660.     loadmask (new command)
  2661.     ======================
  2662.     savemask (new command)
  2663.     =======================
  2664.     This command loads the main mask (the region selection mask) from a
  2665.     saved mask file.
  2666.     
  2667.     'loadmask <complete_filename> [mode]'
  2668.            where...
  2669.                       mode   1 = Replace existing mask (default) 
  2670.                              2 = OR
  2671.                              3 = AND
  2672.                              4 = XOR
  2673.                              5 = MINUS
  2674.    
  2675.     The opposite command is:
  2676.         'savemask <complete_filename>';
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.                                    -44-                                    
  2695.     backuptoundo (new command)
  2696.     ==========================
  2697.     This command has specifically included to enhance the public interface
  2698.     capabilities. If you are writing an external process, and are
  2699.     operating upon the contents of the Primary buffer, using this command
  2700.     before you perform your process will copy the initial contents of the
  2701.     Primary buffer into the UnDo buffer, allowing the user to UnDo the
  2702.     changes caused by your process.
  2703.     
  2704.                                  ----------
  2705.     
  2706.     coords <show> [showattop] (new command)
  2707.     =======================================
  2708.     Here, <show> is required, 0 means no, 1 means yes.
  2709.     
  2710.                                  ----------
  2711.     
  2712.     grid <on> <xgrid> <ygrid> <xoffs> <yoffs> (new command)
  2713.     =======================================================
  2714.     Here, <on> is required and should be 1 for on, 0 for off.  If <on> is
  2715.     present, then the other four parameters must also be.  <xgrid> and
  2716.     <ygrid> define the spacing of the grid. <xoffs> and <yoffs> define the
  2717.     offset from the top left edge of the image where the first vertice of
  2718.     the grid will occur. These last two parameters MUST be values less
  2719.     than the first two.
  2720.     
  2721.                                  ----------
  2722.     
  2723.     autoactivate (new command)
  2724.     ==========================
  2725.     The autoactivate ARexx command has been added so that you can change
  2726.     the state of the image processor's automatic re-activation of it's
  2727.     main control panel when it completes all pending operations.
  2728.     
  2729.     Since there may be times when you have another process running, and
  2730.     don't want the image processor to reactivate it's window during that
  2731.     time, this command was added.
  2732.     
  2733.     Use it as autoactivate 0 to turn autoactivation off, and use it as
  2734.     autoactivate 1 to turn it back on again.
  2735.     
  2736.     If you are passing control to another program, make sure that
  2737.     autoactivate 0 is in the ARexx script before the other program is
  2738.     called; and when control is returned to the image processor, make sure
  2739.     that autoactivate 1 is in the script before you bring up the the image
  2740.     processor screens. Bringing the the image processor's display to the
  2741.     front with autoactivate off may seriously confuse the user.
  2742.     
  2743.                                  ----------
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.                                    -45-                                    
  2754.     setpalette (new command)
  2755.     ========================
  2756.     This ARexx command has been added so that the color of any of the 256
  2757.     palette entries may be set from a script. The PI Module which is now
  2758.     supplied uses this command to set palette entries once it has read the
  2759.     IFF file and extracted the CMAP (color map) chunk from within the
  2760.     image file. Use is simple:
  2761.  
  2762.         'setpalette' entry R G B;
  2763.  
  2764.     Where the parameters are defined as:
  2765.  
  2766.       entry: [0-255] (which palette color of 256)
  2767.           R: [0-255] (intensity)
  2768.           G: [0-255] (intensity)
  2769.           B: [0-255] (intensity)
  2770.  
  2771.     Here is an ARexx fragment that sets the palette to a grey scale:
  2772.  
  2773.         do i=0 to 255
  2774.           'setpalette' i i i i;
  2775.           end;
  2776.  
  2777.     Here is an ARexx fragment that sets the palette to all black:
  2778.  
  2779.         do i=0 to 255
  2780.           'setpalette' i 0 0 0;
  2781.           end;
  2782.  
  2783.     Here is an ARexx fragment that sets the palette to a reverse grey scale:
  2784.  
  2785.         do i=0 to 255
  2786.           'setpalette' i 255-i 255-i 255-i;
  2787.           end;
  2788.  
  2789.                                 ----------
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.                                    -46-                                    
  2813.     DISPLAYMODE (new command)
  2814.     =========================
  2815.     DISPLAYMODE <mode> <lace>  [quality] ------ for Image Professional
  2816.     DISPLAYMODE <mode> <lace> ----------------- for Imagemaster
  2817.     DISPLAYMODE <mode> <res> ------------------ for Imagemaster F/c
  2818.     
  2819.     This command allows you to change the current display mode within the
  2820.     image processing software. It has no effect upon the image itself, nor
  2821.     upon output render results. In the following table, "Q" is used to
  2822.     specify the [quality] switch.
  2823.     
  2824.                      for IP <mode> is 0 = luma
  2825.                                       1 = avg
  2826.                                       2 = reg Ord Dither
  2827.                                       3 = HAM-E 24 bit (also depends on Q flag)
  2828.                                       4 = HAM-E 18 bit (also depends on Q flag)
  2829.                                       5 = EDD 256 colors
  2830.                             <lace>    0 = non-lace
  2831.                                       1 = lace display
  2832.                          [quality]    0 = normal
  2833.                                       1 = high quality (HQ)
  2834.     
  2835.                      for IM <mode> is 0 = luma (in 16 shades)
  2836.                                       1 = avg
  2837.                                       2 = 16 color hi-res
  2838.                                       3 = 32 color lo-res
  2839.                                       4 = half-brite
  2840.                                       5 = HAM (fast)
  2841.                                       6 = HAM (quality)
  2842.     
  2843.                    for IMFc <mode> is 0 = luma (256 shades)
  2844.                                       1 = avg
  2845.                                       2 = color (24 bit)
  2846.       (the second parameter is then <resolution>)
  2847.                                       0 = low res
  2848.                                       1 = med-res
  2849.                                       2 = med-res 2
  2850.                                       3 = hi-res
  2851.                                       
  2852.                                 ----------
  2853.     
  2854.     pal (new command)
  2855.     =================
  2856.     This is used with options results in ARexx. Reports 0 for NTSC and
  2857.     1 for PAL modes. Used to determine how Imagemaster is running at
  2858.     the time of macro execution.
  2859.     
  2860.                                 ----------
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.                                    -47-                                    
  2872.     autoprimary <mode> (new command)
  2873.     ================================
  2874.     This command puts the image manipulation software into a mode where
  2875.     any newly allocated buffer is automatically made the primary buffer.
  2876.     This makes ARexx scripting, especially in Sequence or Morph scripting,
  2877.     much easier to deal with.
  2878.  
  2879.       mode = 0  new buffers do not become the primary unless there are none
  2880.       mode = 1     "        always become primary
  2881.       
  2882.                                 ----------
  2883.                                 
  2884.     newbrush <bufferNumber> (new command)
  2885.     =====================================
  2886.     Selects the chosen buffer as the current brush, as used in
  2887.     the paint tool panel.
  2888.       
  2889.                                 ----------
  2890.  
  2891.     newblend <bufferNumber> (new command)
  2892.     =====================================
  2893.     Selects the chosen buffer as the current blend, as used for
  2894.     alpha control purposes (under the Set Blend panel).
  2895.       
  2896.                                 ----------
  2897.  
  2898.     loadassecondary <name> (new command)
  2899.     ====================================
  2900.     Loads an image file and makes it the secondary buffer. Uses
  2901.     the image path and extension set with the appropriate ARexx
  2902.     commands or last typed into Imagemaster's requester. It
  2903.     returns the buffer number of the new buffer.
  2904.       
  2905.                                 ----------
  2906.  
  2907.     loadasblend <name> (new command)
  2908.     ================================
  2909.     Loads an image file and makes it the blend (alpha) buffer.
  2910.     Uses the image path and extension set with the appropriate
  2911.     ARexx commands or last typed into Imagemaster's requester. It
  2912.     returns the buffer number of the new buffer.
  2913.       
  2914.                                 ----------
  2915.  
  2916.     loadasbrush <name> (new command)
  2917.     ================================
  2918.     Loads an image file and makes it the brush buffer. Uses the
  2919.     image path and extension set with the appropriate ARexx
  2920.     commands or last typed into Imagemaster's requester. It
  2921.     returns the buffer number of the new buffer.
  2922.       
  2923.                                 ----------
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.                                    -48-                                    
  2931.     render (changed)
  2932.     ================
  2933.     The following replaces the description of the RENDER Arexx command on
  2934.     pages 177 and 178 of the manual.
  2935.     
  2936.     Summary of changes: -
  2937.     
  2938.                 *  19 new render modes
  2939.                 
  2940.                 *  No more size restrictions, except when rendering for
  2941.                    DCTV (as required by the device).
  2942.                    
  2943.                 *  Number of colors defaults to the maximum for that
  2944.                    render mode.
  2945.     
  2946.     Detail for ARexx render command
  2947.     -------------------------------
  2948.     
  2949.     render <lace> <width> <height> <mode> <usepalette> <name> [numcolors]
  2950.     ---------------------------------------------------------------------
  2951.     
  2952.     <lace>    0 = no, 1 = yes.
  2953.               Ignored for GIF and the non-viewable IFF renders.
  2954.     
  2955.     <width>   render image width.
  2956.               Only restricted to between 640 and 736 for DCTV.
  2957.     
  2958.     <height>   render image height.
  2959.                Only restricted when rendering for the DCTV to between 
  2960.                200 and 241 for non-lace and between 400 to 481 for lace.
  2961.     
  2962.     <mode>
  2963.     
  2964.     1 = HAM-E mode, 18 bit
  2965.     2 = HAM-E mode, 24 bit (extended color space dithering)
  2966.     3 = Register mode for the HAM-E device, undithered
  2967.     4 = Register mode for the HAM-E device, dithered (EDD)
  2968.     5 = Register mode for the HAM-E device, Black and White average
  2969.     6 = Register mode for the HAM-E device, Black and White luma
  2970.     
  2971.     7 = 256 color GIF
  2972.     
  2973.     8 =  16 shade Amiga hi-res - Black and White Average
  2974.     9 =  16 shade Amiga hi-res - Black and White Luma
  2975.     10 = 16 color Amiga hi-res - color
  2976.     11 = 32 color Amiga lo-res
  2977.     12 = 64 color Amiga half-brite
  2978.     13 = Amiga HAM
  2979.     
  2980.     14 = DCTV 3-bitplane (width must be 640 to 736, and height 200 to 241,
  2981.                                                     or         400 to 482)
  2982.     15 = DCTV 4-bitplane (width must be 640 to 736, and height 200 to 241,
  2983.                                                     or         400 to 482)
  2984.                      
  2985.                      <continued next page>
  2986.  
  2987.  
  2988.  
  2989.                                    -49-                                    
  2990.     16 = Amiga Hi-Res with 1 bitplane  and 2 colors
  2991.     17 = Amiga Hi-Res with 2 bitplanes and 4 colors or less
  2992.     18 = Amiga Hi-Res with 3 bitplanes and 8 colors or less
  2993.     19 = Amiga Lo-Res with 1 bitplane  and  2 colors
  2994.     20 = Amiga Lo-Res with 2 bitplanes and  4 colors or less
  2995.     21 = Amiga Lo-Res with 3 bitplanes and  8 colors or less
  2996.     22 = Amiga Hi-Res with 4 bitplanes and 16 colors or less
  2997.     23 = Amiga IFF render (not displayed ) with 6-bitplanes and 64 colors
  2998.     24 = Amiga IFF render (not displayed ) with 7-bitplanes and 128 colors
  2999.     25 = Amiga IFF render (not displayed ) with 8-bitplanes and 256 colors
  3000.     
  3001.     <usepalette>   If 0 the image colors will be chosen; if 1 then the
  3002.                    currently loaded palette will be used.
  3003.                    
  3004.     <name>     The image name used to save the rendered image to.
  3005.                The full name will be a combination of the render path
  3006.                that was set with the   RENDERPATH command, this name,
  3007.                and the extension that was set with the 
  3008.                RENDEREXT command.
  3009.      
  3010.     
  3011.     [numcolors]    The number of colors used to render with. This 
  3012.                    defaults to the maximum number of colors
  3013.                    possible for each render method.
  3014.                    
  3015.                    This only indicates the number of registers for
  3016.                    Amiga HAM and HAM-E modes even though the actual
  3017.                    number of displayable colors is much higher.
  3018.                    
  3019.                    (Ignored for DCTV renders.)
  3020.                    
  3021.                                 ----------
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.                                    -50-                                    
  3049.     Public Interface
  3050.     ================
  3051.     
  3052.     Provided PI Modules
  3053.     -------------------
  3054.     We have provided a number of PI modules with the image processor.
  3055.     These PI Modules provide:
  3056.     
  3057.         * JPEG load and save capability
  3058.         * PMBC load and save capability
  3059.         * RAW load and save (both color and B&W)
  3060.         * Direct insertion of an image to the FireCracker 24
  3061.     
  3062.     Black Belt Systems has accomplished a number of ``firsts'' with these
  3063.     PI Modules; Our image processing software is the first commercial
  3064.     software on the Amiga to provide JPEG load and save capability, and
  3065.     the only software of any kind to provide PMBC save and load capability.
  3066.     
  3067.                                  ----------
  3068.     
  3069.     Installing the PI Modules
  3070.     =========================
  3071.     To install the provided modules, go into the disk in the release set
  3072.     that contains them and read the file entitled PI_Exec.doc. This gives
  3073.     explicit directions on installation and use.
  3074.     
  3075.                                  ----------
  3076.     
  3077.     Image Locking
  3078.     =============
  3079.     This capability provides a safety net under all Public Interface
  3080.     Modules. What happens is that when an ARexx script LOCKs a buffer, it
  3081.     cannot be changed from inside the image processing software; this
  3082.     allows external processes to run long operations without the concern
  3083.     that user might quit the program and pull the rug out from under, so
  3084.     to speak. Image locking is done with the following commands:
  3085.     
  3086.         LOCKIMAGE   <buffer number>
  3087.         UNLOCKIMAGE <buffer number>
  3088.         UNLOCKALL
  3089.     
  3090.     Note that the NEWBUF command now returns the buffer number if you set
  3091.     OPTIONS RESULTS before you call it. This conveniently provides the
  3092.     buffer number to lock without any further ARexx manipulation.
  3093.     
  3094.                                  ----------
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.                                    -51-                                    
  3108.     Unlock Buffer (in Buffer Panel)
  3109.     ===============================
  3110.     This is the "escape hatch" for the user if they believe that a buffer
  3111.     has been left locked by mistake. This should rarely, if ever, be used
  3112.     by the normal user. However, if you are developing PI Modules, it may
  3113.     come in very handy.
  3114.     
  3115.     Unlocking a locked buffer when it is still being accessed by an
  3116.     external process means that the image processor can delete the buffer,
  3117.     or even exit and delete everything - which means that the task that
  3118.     was writing into the buffer will now be writing in what the system
  3119.     thinks is free memory - very scary stuff. This button warns the user
  3120.     that unlocking isn't advised normally.
  3121.     
  3122.                                  ----------
  3123.     
  3124.     Access to any buffer for PI Modules
  3125.     -----------------------------------
  3126.     This is similar to what you can do with the JACKIN operation, but it
  3127.     is specific to a single buffer. The intent is to allow an ARexx script
  3128.     to create a new buffer which is NOT the primary buffer, and begin
  3129.     working on it without getting in the user's way; the user can continue
  3130.     to work normally, yet this other buffer is "happening"; for instance a
  3131.     ray tracer can render right into it while you do other things. Here
  3132.     are the relevant commands:
  3133.     
  3134.                     UNPLUG <plugpointer>
  3135.       plugpointer = PLUGIN <buffer number>
  3136.     
  3137.     which returns a pointer to a structure as follows:
  3138.     
  3139.                    struct plugina
  3140.                      {
  3141.                        struct jackinbuff *buffer;
  3142.                        unsigned char id[4];       / * 'P','L','U','G' * /
  3143.                      };
  3144.     
  3145.     ...where "buffer" points to:
  3146.     
  3147.                    struct jackinbuff
  3148.                      {
  3149.                        unsigned char *red;
  3150.                        unsigned char *green;
  3151.                        unsigned char *blue;
  3152.                        unsigned char *mask;
  3153.                        unsigned short x;
  3154.                        unsigned short y;
  3155.                      };
  3156.     
  3157.     The expected sequence of operations is to allocate a buffer, PLUGIN to
  3158.     it, LOCK it, do stuff to it, and finally UNLOCK it.
  3159.     
  3160.     Before you use a "plugina" structure, you should check the "id" array
  3161.     and make sure that the four characters P, L, U and G are in positions
  3162.     0, 1, 2 and 3. If not, the structure isn't valid and your command
  3163.     should fail with a warning to the user.
  3164.     
  3165.                                  ----------
  3166.                                    -52-                                    
  3167.     Structures
  3168.     ----------
  3169.     If you are working with the Public Interface, you'll find these
  3170.     structures useful:
  3171.     
  3172.     /*
  3173.      * Structure that represents each buffer in IM
  3174.      */
  3175.     struct rgbu
  3176.       {
  3177.         unsigned char *red;     /* X by Y size array */
  3178.         unsigned char *green;   /* X by Y size array */
  3179.         unsigned char *blue;    /* X by Y size array */
  3180.         unsigned char *mask;    /* X by Y size array (?null?) */
  3181.         unsigned short x;       /* X size */
  3182.         unsigned short y;       /* Y size */
  3183.       };
  3184.     
  3185.     The rgbu structure represents the data built for you about each of the
  3186.     buffers (Primary, Secondary, Brush, Blend, Undo). In the case of the
  3187.     UnDo buffer, the mask pointer will always be NULL.
  3188.     
  3189.     The red, green and blue pointers point to a linear array of unsigned
  3190.     bytes where 0 is fully dark, and 255 is fully bright for that color.
  3191.     
  3192.     The mask pointer, if present, points to an array of unsigned bytes
  3193.     that will contain non-zero values where the image exists, and zero
  3194.     where it does not. If you write image data in regions of the red,
  3195.     green and/or blue buffers that is masked (mask is zero), the user will
  3196.     never see it.  The memory is there and you may write in it if you feel
  3197.     you have a good reason (temporary storage?).
  3198.     
  3199.     The x and y values represent the x and y dimensions of the buffer.
  3200.     Buffer data is arranged X first, then Y. If an image is 320 by 200,
  3201.     the first pixel of the first line is at offset 0 in the buffer; the
  3202.     second pixel in the third line is at offset 961. You can locate pixel
  3203.     data using the following formula, where ``x'' is the width, Y is the
  3204.     current Y position and ``X'' is the current X position:
  3205.     
  3206.         p = (Y * x) + X
  3207.     
  3208.     This should be all the information you need to utilize the data in the
  3209.     rgbu structure.
  3210.     
  3211.                         <continued next page>
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.                                    -53-                                    
  3226.     /*
  3227.      * Represents the main info struct in IM
  3228.      */
  3229.     struct jacker
  3230.       {
  3231.         struct rgbu *pr;        /* Primary Buffer */
  3232.         struct rgbu *se;        /* Secondary Buffer */
  3233.         struct rgbu *un;        /* UnDo Buffer */
  3234.         struct rgbu *bl;        /* Blend Buffer */
  3235.         struct rgbu *br;        /* Brush Buffer */
  3236.         unsigned char *msk;     /* User Mask (Primary-size) */
  3237.         char jack[4];           /* verify: chars J,A,C,K */
  3238.         struct Screen *showscr; /* screen of gadget panel */
  3239.         unsigned char pname[4]; /* processor name: 'IP'00 'IM'00 or 'IMFC' */
  3240.         long ver;               /* version of the program */
  3241.       };
  3242.     
  3243.     The jacker structure contains only two types of data.
  3244.     
  3245.     First, there is a group of pointers to the various rgbu structures
  3246.     that represent the state of those buffers within the system.  If one
  3247.     of these pointers is NULL, then that buffer does not currently exist.
  3248.     
  3249.     Next, there is a pointer to a mask. This mask is always the same size
  3250.     as the Primary buffer; it will only exist if there is a Primary
  3251.     buffer; and as a result, you can get the X:Y size of the mask by
  3252.     examining the X:Y sizes specified in the rgbu structure for the
  3253.     Primary buffer.
  3254.     
  3255.                                  ----------
  3256.     
  3257.     PI Module Code Examples
  3258.     =======================
  3259.     The following code fragment assumes the use of the above structures.
  3260.     It is the beginning of a CLI command which accepts the pointer passed
  3261.     in from the ARexx script fragment shown, and then checks for
  3262.     reasonable values in the structures.
  3263.     
  3264.     There is an additional item in the jacker structure which is a short
  3265.     character array that is loaded with the four ASCII characters J, A, C
  3266.     and K. This is not documented in the manual, but it is there in all
  3267.     cases and you should ALWAYS check for it before assuming that
  3268.     everything is ok to proceed.
  3269.     
  3270.                         <continued next page>
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.                                    -54-                                    
  3285.     You should always do this, or it's equivalent, when beginning a
  3286.     process operation upon the primary buffer:
  3287.     
  3288.     void main(argc,argv)
  3289.       int argc;
  3290.       char *argv[];
  3291.       {
  3292.       int tot,i;
  3293.       struct jacker *j;
  3294.       unsigned short dx,dy,x,y;
  3295.         if ((argc != 2) || (strcmp(argv[1],"?")==0))
  3296.           {
  3297.             printf("%d arguments...\n",argc-1);
  3298.             printf("Requires one argument:\n\n");
  3299.             printf("'JACKIN' hex pointer\n\n");
  3300.             exit(1);
  3301.           }
  3302.         sscanf(argv[1],"%x",(int *)&j); /* *jackin */
  3303.         if (j->pr == 0)
  3304.           {
  3305.             printf("No Primary Buffer!\n");
  3306.             exit(2);
  3307.           }
  3308.         if ((j->pr->x == 0) || (j->pr->y == 0)) /* bad */
  3309.           {
  3310.             exit(3);
  3311.           }
  3312.         if (j->jack[0] != 'J') exit (4);  /* check sanity */
  3313.         if (j->jack[1] != 'A') exit (5);
  3314.         if (j->jack[2] != 'C') exit (6);
  3315.         if (j->jack[3] != 'K') exit (7);
  3316.         /*
  3317.          * We got here, so there IS a primary
  3318.          * buffer. We can now proceed...
  3319.          */
  3320.     
  3321.     The previous example used a value passed by the following ARexx
  3322.     code fragment:
  3323.     
  3324.         address 'IM_Port'; /* talk to the image processor */
  3325.         options results;   /* allow replies */
  3326.         'jackin';          /* get pointer to structs */
  3327.         jackadr = result;  /* copy return value */
  3328.         options;           /* disallow replies */
  3329.         'wbtofront';       /* bring WorkBench up */
  3330.         address command 'c:ccpr '||jackadr; /* send... */
  3331.     
  3332.     This ARexx fragment, or something extremely similar to it, is what you
  3333.     use to send the Public Interface pointer to your custom process, image
  3334.     loader, or image render program.
  3335.     
  3336.     Note that in combination with the other ARexx commands for panels,
  3337.     file requesters, area control specifiers and so on you can create a
  3338.     great deal of the required logic for your tool(s) using nothing more
  3339.     than the ARexx interface. There is a complete example of a "process"
  3340.     type of PI Module on the release disks, with SAS C source code, ARexx,
  3341.     and linkable object modules which provide progress bar indication and
  3342.     control panel based message services.
  3343.                                    -55-                                    
  3344.     Changes List (from v7.00 onwards)
  3345.     =================================
  3346.     The following information provides a terse list of changes applied to
  3347.     each revision of the image processors listed. For details, refer to
  3348.     the text in the preceeding sections. The most recent changes are at
  3349.     the end of the list.
  3350.  
  3351.     When reading the changes list, you can interpret items which have a
  3352.     leading (+) symbol to be features added; items which have a leading
  3353.     (-) symbol are items which have been removed or bugs we've fixed.
  3354.  
  3355.     v7.00
  3356.     -----
  3357.     + New ARexx command 
  3358.          'listreq "Title text",listfile,"keywords,etc"'
  3359.  
  3360.       If there is more than one keyword they should be put inside
  3361.       double quotes but separated by spaces or commas.
  3362.  
  3363.     + All new buffer creation operations that can have a choice for
  3364.       the destination bring up    . New as Secondary
  3365.                                   . New as Brush
  3366.                                   . New as Blend
  3367.       and when an existing buffer can be replaced, there is also
  3368.                                   . Old as Secondary (Hold Primary)
  3369.                                   . Old as Brush     (Hold Primary)
  3370.                                   . Old as Blend     (Hold Primary)
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.                                    -56-                                    
  3403.     v7.01
  3404.     -----
  3405.     + Change to ARexx command   DISPLAYMODE <mode> [lace] [quality]
  3406.          in IP only           modes are 0 = luma
  3407.                                         1 = avg
  3408.                                         2 = reg Ord Dither
  3409.                                         3 = HAM-E 24
  3410.                                         4 = HAM-E 18
  3411.                                         5 = EDD 256 colors
  3412.                               lace      0 = non-lace
  3413.                                         1 = lace display
  3414.                               quality   0 = normal
  3415.                                         1 = high quality
  3416.  
  3417.     - Now all display mode changes intelligently do not re-allocate
  3418.       display screen. Helps reduce memory fragmentation problems
  3419.  
  3420.     + Image composition Logical And
  3421.  
  3422.     + Image composition Logical Or
  3423.  
  3424.     + New compose operation Add as Cyan     (from color separation)
  3425.       and ARexx command 'addasc'
  3426.  
  3427.     + New compose operation Add as Magenta  (from color separation)
  3428.       and ARexx command 'addasm'
  3429.  
  3430.     + New compose operation Add as Yellow   (from color separation)
  3431.       and ARexx command 'addasy'
  3432.  
  3433.     + New compose operation Add as Black    (from color separation)
  3434.       and ARexx command 'addask [ucr] [gcr]'
  3435.       These <ucr> <gcr> values are the user's best estimates of what
  3436.       was used to create the separation and only the ratio
  3437.       is significant.  Normally they are  64, 64.
  3438.       If they are ommitted then the program supplies the last
  3439.       values it used, so separating and reloading will work simply.
  3440.  
  3441.     + New ARexx command 'WHITEN' which makes the primary image all white
  3442.       (faster than newbuf can)
  3443.  
  3444.     + New ARexx command 'VERSION' which returns the version,revision
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.                                    -57-                                    
  3462.     v7.02
  3463.     -----
  3464.     + Compose Morph screen and operations enabled for release :^)
  3465.  
  3466.     + New File I/O buttons    'Set Render Mode'
  3467.                               'Set Render Size'
  3468.                               'Set Dither Type'
  3469.       And 'Render to File' just asks for area select
  3470.  
  3471.     + Dither types added are   No Dither
  3472.                                Normal Edd
  3473.                                Floyd-Steinberg
  3474.                                Jarvis,Judice,Ninke
  3475.                                Stucki
  3476.     + Lace gadget in Render Size panel now changes the Vertical Size
  3477.  
  3478.     + Amiga mode renders now update the paint palette with the
  3479.       rendered palette.
  3480.       So that before rendering   'PALETTELOAD name'     will load colors
  3481.       and after rendering        'SAVEPAL name'  will save rendered colors
  3482.       Note! All renders from ARexx always took note of the <usepalette>
  3483.       parameter which causes the renders to use colors from the palette.
  3484.  
  3485.     + File I/O panel now has a 'Set Render Mode' option.
  3486.       The Render to File operation no longer asks about render settings.
  3487.  
  3488.     + Aspect ratio is now saved with rendered images, and
  3489.       all IFF file loading sets the aspect ratio of the incoming image.
  3490.  
  3491.     + Renders to IFF with more than 100 colors use Ben's Spectral method
  3492.       less colors use Barry's method.
  3493.  
  3494.     + IP 'gate" enabled for release. Only HAM-E owners will now be
  3495.       able to use IP, as we originally intended.
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.                                    -58-                                    
  3521.     7.03:
  3522.     -----
  3523.     + Dither Type panel provides 'Left->Right Error Prop'
  3524.                               or 'Serpentine  Error Prop'
  3525.  
  3526.     - 16 color Hi-Res Render and 32 color Lo-Res render had their
  3527.       vbar titles swapped. Fixed.
  3528.  
  3529.     + New dither methods       Random F-S
  3530.                                Dual Random F-S
  3531.  
  3532.     + Excursion limit gadget now in dither panel
  3533.  
  3534.     + Render and Morph path and settings now get saved with default file
  3535.  
  3536.     + Chekov Forcing in dither panel added. Significant render improvements
  3537.       are possible using this option in low color renders
  3538.  
  3539.     + Match Image Size in Render Size panel sets props
  3540.  
  3541.     + DCTV 1.1 images can now be read as well as 1.0 and library generated ones
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.                                    -59-                                    
  3580.     7.04:
  3581.     -----
  3582.     + New compose operation Add as Red     (from color separation)
  3583.       and ARexx command 'addasr'
  3584.  
  3585.     + New compose operation Add as Green     (from color separation)
  3586.       and ARexx command 'addasg'
  3587.  
  3588.     + New compose operation Add as Blue     (from color separation)
  3589.       and ARexx command 'addasb'
  3590.  
  3591.     + You can now select rendering as the output of the morph capability
  3592.       instead of only 24-bit files. Uses the current render settings
  3593.  
  3594.     - Panning in IP would confuse at the bottom edge, fixed
  3595.  
  3596.     - Changing display in IP from non-lace to lace when panned to the 
  3597.       bottom sometimes crashed.
  3598.  
  3599.     + Auto-Activate control in Display control panel for multitasking
  3600.       friendly operations. If Auto-Activate is off, no window will
  3601.       activate and no screen will come to the front automatically.
  3602.  
  3603.     - In Morph sequence after the 'Total Frames' is decreased to less
  3604.       than the 'End Frame', the end frame was reset to one too high.
  3605.  
  3606.     + Special keystroke operation 'C' now saves the canvas to disk
  3607.       as an IFF in most areas of the program. Special keystroke 'G'
  3608.       still active for all gadget panels.
  3609.  
  3610.     - Special keystroke operation 'P' (show display palette) is only
  3611.       active when an image has just been drawn in the canvas.
  3612.  
  3613.     + File requester now <selects> when return is hit in the file name
  3614.       gadget. Also, pressing return in the path and extension gadgets does
  3615.       not blank the other fields. The next active gadget then becomes the
  3616.       file name gadget.
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.                                    -60-                                    
  3639.     8.00:
  3640.     -----
  3641.     + 68030 and FPU version of IM, IMFC and IP now available
  3642.  
  3643.     + Sequence Processor added for multiple image handling
  3644.  
  3645.     + Shadow generation added to all compose operations
  3646.  
  3647.     + Morph processor can now tack down image edges
  3648.  
  3649.     + Filmstrip capability added
  3650.  
  3651.     + ARexx command "finish" added for sequence processor
  3652.  
  3653.     + ARexx command "tween" added for sequence processor
  3654.  
  3655.     + Panel may now be hidden during progress bar activities (right mouse)
  3656.  
  3657.     + Caricature operation now has "effect" control as well as radius
  3658.  
  3659.     + Dome operation now has "effect" control as well as radius
  3660.  
  3661.     + Caricature ARexx macro now has extra parameter for effect (def to 100%)
  3662.  
  3663.     + Dome ARexx macro now has extra parameter for effect (def to 100%)
  3664.  
  3665.     + GIF loader taught how to deal with faulty image size info
  3666.  
  3667.     - Errors from 7.02 onwards in 256 color image generation fixed
  3668.  
  3669.     - ARexx oval and rect commands fixed
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.                                    -61-                                    
  3698.     8.01:
  3699.     -----
  3700.     - Error that caused 68000 version of 8.00 to crash instantly
  3701.       if the user attempted to morph fixed
  3702.  
  3703.     - A number of "enforcer hits" fixed, all harmless (byte reads from low
  3704.       memory)
  3705.  
  3706.     - Bug that caused 250 ms delay (1/4 second) each time a morph
  3707.       point was added in a 3000-class machine fixed
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.                                    -62-                                    
  3757.     8.02:
  3758.     -----
  3759.     + Balance to Color in process panel
  3760.  
  3761.     + The File I/O panel now allows render settings to be changed even
  3762.       when no buffer is loaded. Inappropriate gadgets are ghosted.
  3763.  
  3764.     + Render and Save as 24-bit can both be selected in multi-frame
  3765.       processor
  3766.  
  3767.     + Load and save main mask
  3768.     + ARexx commands 'loadmask <complete_filename> [mode]'
  3769.                          mode   1 = Replace existing mask (default) 
  3770.                                 2 = OR
  3771.                                 3 = AND
  3772.                                 4 = XOR
  3773.                                 5 = MINUS
  3774.  
  3775.       ...and 'savemask <complete_filename>'
  3776.  
  3777.     + Load and save image mask
  3778.     + ARexx commands 'loadimask <complete_filename> [mode]'
  3779.                          mode   1 = Replace existing mask (default) 
  3780.                                 2 = OR
  3781.                                 3 = AND
  3782.                                 4 = XOR
  3783.                                 5 = MINUS
  3784.       If the image does not already have a mask, [mode] is forced to 1
  3785.  
  3786.       ...and 'saveimask <complete_filename>'
  3787.  
  3788.     + Amiga draw modes in IM improved
  3789.  
  3790.     + ARexx command 'imageaspect <picnum>' reports aspect ratio
  3791.  
  3792.     + Multi-frame processor has 'Execute Using Primary'
  3793.  
  3794.     - Cancel in multi-frame processor now resets the 'finish' status
  3795.  
  3796.     - The script in the multi-frame processor was clipping in the
  3797.       wrong place and clipping in this panel could disturb the actual
  3798.       script and path strings
  3799.  
  3800.     - Trying to run the multi-frame processor without a script is
  3801.       handled with a message
  3802.  
  3803.     - Dome and caricature could not handle large negative effect amounts
  3804.       that can be passed from ARexx
  3805.  
  3806.     - Number of frames was not being reset in display panel after a
  3807.       new film strip was loaded
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.                                    -63-                                    
  3816.     9.00:
  3817.     -----
  3818.     + Process panel and sub-panel reorganization
  3819.  
  3820.     + Compose panel reorganization
  3821.  
  3822.     + User can now select either the 2.0 (ASL) file requester or the
  3823.       Black Belt Systems file requester, as they prefer. Khalid
  3824.       Aldoseri's ASL replacement file requester has also been tested and
  3825.       now works with this software. ARexx supported.
  3826.  
  3827.     + "Zoom Clip" operation added. Provides a scaled zoom into the
  3828.        primary image. ARexx supported.
  3829.  
  3830.     + The font list requester can now handle fonts with names
  3831.       (including the point size) up to 46 characters in length
  3832.  
  3833.     + Sort directory list button in Multi-frame Processor allows
  3834.       you to optionally sort the list of files
  3835.  
  3836.     + Info button put back into main panel for ease of access
  3837.  
  3838.     + Color Separation button in File I/o panel moved to the second line
  3839.       so that all render controls would locate in the first line
  3840.  
  3841.     - Numerous small bug fixes applied.
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.                                    -64-                                    
  3875.     9.01:
  3876.     -----
  3877.     - problem when calling FR from ARexx with new requesters only
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904.  
  3905.  
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.  
  3916.  
  3917.  
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.                                    -65-                                    
  3934.     9.02:
  3935.     -----
  3936.     - Jarvis and Stucki dither were broken
  3937.  
  3938.     - The Info gadget needed to be ghosted when IP started until the
  3939.       code is entered
  3940.  
  3941.     - Zoom Clip prop gadgets would drop percent by 1 on re-entry
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.  
  3969.  
  3970.  
  3971.  
  3972.  
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978.  
  3979.  
  3980.  
  3981.  
  3982.  
  3983.  
  3984.  
  3985.  
  3986.  
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.                                    -66-                                    
  3993.     9.03:
  3994.     -----
  3995.     
  3996.     - Radial Wave ran out of precision in images higher than 400 lines
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.  
  4040.  
  4041.  
  4042.  
  4043.  
  4044.  
  4045.  
  4046.  
  4047.  
  4048.  
  4049.  
  4050.  
  4051.                                    -67-                                    
  4052.     9.04:
  4053.     -----
  4054.     + Entire image area selection made about 4 times faster
  4055.     
  4056.     - Radial Wave, Dome, and Caricature were unprotected against
  4057.       zero wavelengths/radius passed from ARexx
  4058.       
  4059.     - Radial wave prop gadgets got thrown back to zero after being
  4060.       last set at max
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.                                    -68-                                    
  4111.     9.05:
  4112.     -----
  4113.     + The multi-frame and morph sequencer can now both handle four scripts:
  4114.     
  4115.                          (1) Opening      before all frames.
  4116.                    :--   (2) Pre-render   after image load or morph + ops,
  4117.              loop  |                      but prior to the save or render.
  4118.                    :--   (3) Post-render  after each render.
  4119.                          (4) Closing      after all frames.
  4120.       
  4121.       Any of these script names may be blank and will then be skipped. If
  4122.       any script exists, you MUST complete it with a 'finish'; command!
  4123.       The objective here is to allow you to create a "setup" script, a "do
  4124.       the job" script, a "clean up" script, and a "finish everything"
  4125.       script. We have used this to build in a complete ANIM generator...
  4126.       
  4127.         rxpi:animwr1.rexx - for the "setup" script
  4128.         [optional script] - for the "do the job" script
  4129.         rxpi:animwr3.rexx - for the "clean up"  script
  4130.         rxpi:animwr4.rexx - for the "finish everything" script
  4131.       
  4132.       ...for any set of effects you run in the sequence processor or the
  4133.       morph generator. For just morphing or rendering, you won't need to
  4134.       use a "do the job" script. The morphed output from a sequence
  4135.       becomes the current buffer temporarily. The displaced current buffer
  4136.       and the old secondary buffer are locked until they are returned
  4137.       after the sequence.
  4138.  
  4139.     + The gadget panel can be displayed in lace via a default settings
  4140.       button (you have to set it, save defaults, and then restart)
  4141.       
  4142.     + ARexx command 'setpalette <pos> <red> <green> <blue>' added
  4143.     
  4144.     + Aspect ratios default to 44 / 52 rather than 10 / 11
  4145.     
  4146.     + Render Palette from Image now uses the A method
  4147.       for number of colors under 100 and B method over 100
  4148.       
  4149.     + New Process/Special Effect - 'Render Palette for Amiga Ham'
  4150.  
  4151.     - When a non-primary buffer is being rendered, the 'Selected Area'
  4152.       should be automatically set to 'entire', and if 'Match Image Size'
  4153.       is selected then output resolution is set to the full image size
  4154.       
  4155.     - Color assignment for 16 color Hi-res just after image colors had
  4156.       been mostly but not radically changed, were sometimes throwing in
  4157.       a strange color causing renders to be noisy.
  4158.       
  4159.     - 16 color Hi-Res and 32 color Lo-Res gadgets in render mode panel
  4160.       were inverted text-wise - cosmetic change only for panel
  4161.       
  4162.     - Render from ARexx would not render sometimes
  4163.     
  4164.     - Morph and multi-frame sequence now appends .0001,.0002,.. to
  4165.       output filenames instead of "_" character + number
  4166.       
  4167.     - Clip with exact size will now remember its parent
  4168.  
  4169.                                    -69-                                    
  4170.     9.06:
  4171.     -----
  4172.     - Cancelling the multi-frame processor will replace the displaced
  4173.       buffers
  4174.  
  4175.     + The multi-frame processor can run without any scripts at all
  4176.  
  4177.     - When rendering from the multi-frame process the entire area
  4178.       is marked for rendering
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.                                    -70-                                    
  4229.     9.07:
  4230.     -----
  4231.     - Color preview not showing when the gadget panel is in lace
  4232.     
  4233.     - Define color from composition panel was not running
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.                                    -71-                                    
  4288.     9.08
  4289.     ----
  4290.     + Post-render Script gets passed three parameters instead of two, used
  4291.       in the animation writer for the sequence processor and morph tools;
  4292.       they are:
  4293.       
  4294.           thisframe totalframes "renderfilename"
  4295.           
  4296.       NOTE: The ANIM generation tools MUST be run using 9.08 or later;
  4297.             they require this particular capability and will not operate
  4298.             properly on earlier versions of the image manipulation s/w.
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.                                    -72-                                    
  4347.     9.09
  4348.     ----
  4349.     + VERY IMPORTANT For Image Professional Users!!! In Image Professional,
  4350.       the ARexx port name has been CHANGED from "IP_Port" to "IM_Port"!
  4351.       For all of our scripts, this should cause no problem, as they have
  4352.       been written (up to this date) to use either the IP_Port name or the
  4353.       IM_Port name. From now on, we will write ONLY for the IM_Port name.
  4354.       This will simplify many ARexx scripts, and will ensure that third-
  4355.       party scripts have fewer problems between the various versions of
  4356.       our image manipulation software. At this point, Imagemaster,
  4357.       Imagemaster F/c and Image Professional ALL have the same port name.
  4358.     
  4359.     + Many new PI Module capabilities (see PI_EXEC.DOC from the PI
  4360.       disk or the PIE.LZH archive for telecomm updates)
  4361.     
  4362.     + New capabilities which provide for automatic display updating
  4363.       on external/additional display dedvices. FC24 PI Module
  4364.       updated to utilize this capability. Display updating is
  4365.       very efficient, information on the rectangular sub-region that
  4366.       was changed is used to limit display refreshes.
  4367.  
  4368.     + Added ANIM writer capability (this also requires latest PI Mods)
  4369.  
  4370.     + If the morph generator is not calling any scripts, it will
  4371.       not redraw the main display for each frame (this saves time).
  4372.     
  4373.     + Roll image geometric process added 
  4374.  
  4375.     - Palette from image operation would disturb the display. This
  4376.       has been fixed.
  4377.  
  4378.     - Bug where Image Professional only could not always reach the
  4379.       bottom scan line of an image using the area selection tools
  4380.       such as rectangle. Fixed.
  4381.     
  4382.     - ASKPROP ARexx command would not return values larger than
  4383.       four digits. Fixed.
  4384.  
  4385.  
  4386.  
  4387.  
  4388.  
  4389.  
  4390.  
  4391.  
  4392.  
  4393.  
  4394.  
  4395.  
  4396.  
  4397.  
  4398.  
  4399.  
  4400.  
  4401.  
  4402.  
  4403.  
  4404.  
  4405.                                    -73-                                    
  4406.     9.10
  4407.     ----
  4408.     + Random dither now has luma mode; this is a VERY nice addition
  4409.       to the random dither effect - try it and see!
  4410.     
  4411.     + Pressing 'r' when the morph display is on will redraw the
  4412.       two morph windows as well as the control points
  4413.     
  4414.     + Added "Exclude Black" button to histograms... this has the effect
  4415.       of amplifying the histogram by removing what is often a high
  4416.       content, but low-information portion of the histogram data.
  4417.     
  4418.     + Select ALL button added to sequence processor
  4419.     
  4420.     + Filmstrip frames are now numbered
  4421.     
  4422.     + Added "reverse" animation button to filmstrip controls
  4423.     
  4424.     + You can now delete filmstrip frames by number
  4425.     
  4426.     + You can now insert filmstrip frames by number
  4427.     
  4428.     + You can now swap filmstrip frames by number
  4429.     
  4430.     + Filmstrip re-allocation is now non-destructive so that you may
  4431.       change the number of frames as a way to shorten or lengthen an
  4432.       existing filmstrip.
  4433.     
  4434.     - Loading images which did NOT have masks would not work properly
  4435.       as a brush.
  4436.     
  4437.     - Emboss positioning works better now
  4438.     
  4439.     + New ARexx commands 'emboss <contrast>'
  4440.                      and 'punch  <contrast>'
  4441.       Contrast is usually from 0 to 255.  A secondary image needs to
  4442.       be assigned, and an area selection should be made prior to the
  4443.       emboss or punch command.
  4444.       
  4445.     - Clip with exact size would miss the bottom line in Imagemaster
  4446.     
  4447.     - Imagemaster palette foreground/background selection could get
  4448.       confused
  4449.       
  4450.     - Certain "short" windows in the control panels would show a bit
  4451.       of underlying data because they were too short - we've added
  4452.       some height so that this harmless, but unsightly artifact is gone.
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.                                    -74-                                    
  4465.     9.11
  4466.     ----
  4467.     + The pointer is invisible when moving points in a morph
  4468.     
  4469.     + Filmstip now has speeds up to 30
  4470.     
  4471.     + Loading and saving filmstrips has progress bar
  4472.     
  4473.     + Redraw scripts are sent a 'finish' parameter when the redraw
  4474.       script option is turned off or the image processor ended
  4475.       
  4476.     + The Redraw script name cannot be changed while the redraw
  4477.       script option is ON.
  4478.  
  4479.     + New ARexx command 'pal' which reports 0 for NTSC 1 for PAL
  4480.     
  4481.     + New ARexx command 'autoprimary <mode>'
  4482.       mode = 0  new buffers do not become the primary unless there are none
  4483.       mode = 1     "        always become primary
  4484.       
  4485.     + DCTV renders go to 566 vertically if IM is in PAL
  4486.  
  4487.     - Dual Vertical and Horizontal Warp range could divide by zero
  4488.       when the area is 1 pixel wide
  4489.  
  4490.     - Undo in Imagemaster now takes care of the color space so that
  4491.       undo-ing to an image with a different palette will no longer
  4492.       break during partial redraws.
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.                                    -75-                                    
  4524.     9.12
  4525.     ----
  4526.     + Pre-defined shape area selections!
  4527.           Area select panel now has -
  4528.              'Shape from Corner'
  4529.              'Shape Centered'
  4530.              'Load Shape'
  4531.       See EXAMPLE.ISH  for an example shape file format.
  4532.  
  4533.     - Perspective scale was not correctly using the image local mask
  4534.       when it existed
  4535.  
  4536.     - EXTRA_HALFBRITE flag was not being set in IFF saves
  4537.  
  4538.     - Area print allowed area to be 1 pixel past image right and bottom
  4539.       causing the wrong area to be printed
  4540.  
  4541.     - Drawing an elipse on a <= 2x2 image would crash
  4542.  
  4543.     - Palette and range screens would draw with the wrong colors when
  4544.       the main display was in 16-color HI-Res
  4545.  
  4546.     - Palette and range screens would disturb main canvas color
  4547.       redraw color space
  4548.  
  4549.     - Hue change window overwrote the left text field
  4550.  
  4551.     - New/From Blend/From Digiview selection shows below gadgets
  4552.  
  4553.     - Message window was also too short
  4554.  
  4555.     - Buffer rename window was also too short
  4556.  
  4557.     - Paint fill operations did not clear mask second time through
  4558.  
  4559.     - New buffer did not initialize to color if there was no primary
  4560.       buffer
  4561.  
  4562.     - 2-way vertical blend was not using lower transparency curve
  4563.       correctly
  4564.  
  4565.     - Map to range went past the range in bright areas
  4566.  
  4567.     - Workaround for DCTV overscan limit of 704 under AmigaDOS 2.0
  4568.  
  4569.     - Painting redraw in IM could redraw outside screen area
  4570.  
  4571.     - AmigaDOS file requester interface returned extension twice
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.                                    -76-                                    
  4583.     9.13
  4584.     ----
  4585.     + Distance Calculator in analysis panel. Converts distance measured
  4586.       (or typed in) between Inches, cm, picas, points,
  4587.       Horizontal pixels, and Vertical pixels.
  4588.       
  4589.     + Pad Canvas operation in Re-Sizing and Clipping in Process Panel
  4590.       pads the selected area to a new size allowing the user to
  4591.       position the clipped area in any of 9 arrangements.
  4592.       
  4593.     + 'padcanvas <Xsize> <Ysize> <Position> <NewName>'  ARexx command.
  4594.       It returns the buffer number.
  4595.       Xsize and Ysize are the dimensions of the new buffer,
  4596.       Position is 1 = Top Left
  4597.                   2 = Top Center
  4598.                   3 = Top Right
  4599.                   4 = Middle Left
  4600.                   5 = Middle Center
  4601.                   6 = Middle Right
  4602.                   7 = Bottom Left
  4603.                   8 = Bottom Center
  4604.                   9 = Bottom Right
  4605.      The Following is a working script :-
  4606.                     
  4607.                     /* ARexx example of PADCANVAS operation * /
  4608.                     address('IM_Port');
  4609.                     'entire';
  4610.                     options results;
  4611.                     'padcanvas 400 400 5 NewClip';
  4612.                     'newcurrent '||result;
  4613.                     exit 0;
  4614.  
  4615.     + Horizontal and Vertical Flip operations now work outside of and
  4616.       move the image local mask
  4617.       
  4618.     + Morph 'Drop Grid' button
  4619.     
  4620.     + Composition using color keying now keys the area before doing 
  4621.       transparency channel generation, so that the transparency edges
  4622.       follow the keyed area.
  4623.       
  4624.     + Filmstrip has a Color mode; Display control has 'Color Film'
  4625.       button just like 'Lace Film' (FILMVIEW 1.01 is required to
  4626.       view color filmstrips)
  4627.       
  4628.     + 'newbrush <bufferNumber>'   ARexx command selects a new brush
  4629.     
  4630.     + 'newblend <bufferNumber>'   ARexx command selects a new blend control
  4631.                                   buffer
  4632.  
  4633.                         <continued next page>
  4634.  
  4635.  
  4636.  
  4637.  
  4638.  
  4639.  
  4640.  
  4641.                                    -77-                                    
  4642. Imagemaster 9.13 changes, continued
  4643. -----------------------------------
  4644.  
  4645.     + The following LOADAS... ARexx commands all use the image path and
  4646.       extension that were set with 'IMAGEPATH' and 'IMAGEEXT' commands or
  4647.       last typed into IM's file requester, and return the buffer number of
  4648.       the new buffer.
  4649.       'loadasprimary <name>'      ARexx command loads an image file and
  4650.         makes it the primary.
  4651.         
  4652.     + 'loadassecondary <name>'    ARexx command loads an image file and
  4653.         makes it the secondary.
  4654.         
  4655.     + 'loadasbrush <name>'        ARexx command loads an image file and
  4656.         makes it the brush.
  4657.         
  4658.     + 'loadasblend <name>'        ARexx command loads an image file and
  4659.         makes it the blend control buffer.
  4660.         
  4661.     + Morph  Discrete Velocity Control
  4662.         The Morph panel has added :-
  4663.          .  'Set Point Velocity' button to set the associated velocity
  4664.              of each point;
  4665.          .  'Set VELs' to load or draw new velocity curves.
  4666.       The default velocity curve for control points is <normal>.
  4667.       The associated velocity curves are saved with the points file.
  4668.       Three standard Velocity curves are available at startup:
  4669.        <normal>, <early>, and <late>.  If these curves are changed by
  4670.        the user, they are no longer standard and will therefore be
  4671.        automatically saved with the points file.
  4672.        
  4673.     - Pointer remained busy after palette screen closure
  4674.     
  4675.     - Palette mapping did not do entire image area selection
  4676.     
  4677.     - Cut out brush in Paint Control with entire image or previous region
  4678.       was being ignored
  4679.       
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.  
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699.  
  4700.                                    -78-                                    
  4701.